【力扣周赛#334】6369. 左右元素和的差值 + 6368. 找出字符串的可整除数组 + 6367. 求出最多标记下标

news/2024/7/11 5:01:25 标签: leetcode, 算法, 贪心, 二分, 数学

目录

6369. 左右元素和的差值 - 前缀后缀和 ac

6368. 找出字符串的可整除数组 - 操作余数ac

6367. 求出最多标记下标 - 二分答案 + 贪心


6369. 左右元素和的差值 - 前缀后缀和 ac

class Solution {
    public int[] leftRigthDifference(int[] nums) {
        int n=nums.length;
        int[] res=new int[n];
        int[] l=new int[1010],r=new int[1010];
        int[] s=new int[1010],t=new int[1010];
        
        
        for(int i=1;i<=n;i++) s[i]=s[i-1]+nums[i-1];
        
        for(int i=n;i>=1;i--) t[i]=t[i+1]+nums[i-1];
        
        for(int i=0;i<n;i++) l[i]=s[i];
        
        int cnt=0;
        for(int i=2;i<=n+1;i++) r[cnt++]=t[i];
        
        for(int i=0;i<n;i++) res[i]=Math.abs(r[i]-l[i]);
        return res;
    }
}

6368. 找出字符串的可整除数组 - 操作余数ac

6368. 找出字符串的可整除数组

思路:

暴力取字符串每一段,组合成的数最大有10^5位,肯定tle

所以我们对每一位取余,把余数*10加到下一个数上

如果%m为0,说明0~i位可以整除,否则不能

class Solution {
    public int[] divisibilityArray(String s, int m) {
        int n=s.length();
        int[] res=new int[n];
        long x=0;
        for(int i=0;i<n;i++)
        {
            int t=s.charAt(i)-'0';
            
            x=(t+10*x)%m;
            if(x==0) res[i]=1;
            else res[i]=0;
        }
        return res;
    }
}

 

6367. 求出最多标记下标 - 二分答案 + 贪心

6367. 求出最多标记下标

题目:

思路:

如果可以匹配k对,则将答案放大,直到不能满足匹配条件,则能二分出最大值

想要匹配对数最大,则nums[i]越小,nums[j]越大越好

则就是排序后,最小的k个数和最大的k个数匹配

nums[0]跟nums[n-k]匹配,则nums[i]跟nums[n-k+i]匹配

二分答案,如果该k对都能一一满足条件,则答案放大,否则放小

最后答案就是2*k

class Solution {
    public int maxNumOfMarkedIndices(int[] nums) {
        Arrays.sort(nums);
        int l=0,r=nums.length/2;
        while(l<r)
        {
            int mid=l+r+1>>1;
            if(ck(nums,mid)) l=mid;
            else r=mid-1;
        }
        return l*2;
    }

    public boolean ck(int[] nums,int k)
    {
        for(int i=0;i<k;i++)
            if(nums[i]*2>nums[nums.length-k+i]) return false;
        return true;
    }
}

 


http://www.niftyadmin.cn/n/101002.html

相关文章

CXL技术分析

CXL&#xff0c;全称Compute Express Link&#xff0c;该技术由Intel牵头开发用于高性能计算、数据中心&#xff0c;主要解决处理器、加速器和内存之间的cache一致性问题&#xff0c;可消除CPU、专用加速器的计算密集型工作负载的传输瓶颈&#xff0c;显著提升系统性能。 一、…

Flume三大核心组件

Flume的三大核心组件&#xff1a; Source&#xff1a;数据源 Channel&#xff1a;临时存储数据的管道 Sink&#xff1a;目的地 Source&#xff1a;数据源&#xff1a;通过source组件可以指定让Flume读取哪里的数据&#xff0c;然后将数据传递给后面的 channel Flume内置支持读…

RL笔记:动态规划(2): 策略迭代

目录 0. 前言 (4.3) 策略迭代 Example 4.2: Jack’s Car Rental Exercise 4.4 Exercise 4.5 Exercise 4.6 Exercise 4.7 0. 前言 Sutton-book第4章&#xff08;动态规划&#xff09;学习笔记。本文是关于其中4.2节&#xff08;策略迭代&#xff09;。 (4.3) 策略迭代 基…

Pyinstaller 打包EXE(七) 百篇文章学PyQT

本文章是百篇文章学PyQT6的第七篇&#xff0c;本文讲述如何使用Pyinstaller打包UI界面和代码&#xff0c;将程序打包成EXE来更为方便的进行部署&#xff0c;在写博客和学习的过程中会遇到很多问题&#xff0c;例如&#xff1a;PyQT6在网上很多博客都是PyQT5、或者PyQT4大部分都…

kubernates-1.26.1 kubeadm containerd 单机部署

k8s1.26 kubeadm containerd 安装 kubeadm init 时提示 containerd 错误 failed to pull image “k8s.gcr.io/pause:3.6” 报错日志显示containerd pull时找不到对应的pause版本&#xff0c;而不是registry.k8s.io/pause:3.9 [rootk8s-master containerd]# kubeadm init --k…

《计算机视觉和图像处理简介 - 中英双语版》:神经网络中的激活函数 ReLU vs Sigmoid

文章大纲 Neural Network Module and Training Function创建数据集Define Neural Network, Criterion function, Optimizer and Train the ModelTest Sigmoid and ReluAnalyze Results参考文献与学习路径在本文中,我们在具有两个隐藏层的MNIST数据集上测试Sigmoid和Relu激活函…

SAP FICO期初开账存货导入尾差

一、问题 1.AFS物料网格级别库存导入先除再乘有尾差&#xff1a; 旧系统数据迁移自两个系统&#xff1a;一个管理数量账&#xff08;网格级别&#xff09;&#xff0c;一个管理金额账&#xff08;物料级别&#xff09; 2.MB52分工厂与MB5L分工厂统计差异&#xff1a; M…

2023淘宝天猫38节红包满减优惠活动时间是从几月几号什么时候开始?

2023年淘宝天猫38节活动将于2023年3月2日中午12点正式开始&#xff0c;活动将持续至2023年3月8日晚上23点59分。届时&#xff0c;淘宝天猫将推出一系列的优惠活动和红包福利&#xff0c;为广大女性用户送上节日的祝福和福利。在这个特别的节日里&#xff0c;淘宝天猫为女性用户…