力扣每日一题-统计和小于目标的下标对数目-2023.11.24

    力扣每日一题:统计和小于目标的下标对数目

开篇

 今天这道力扣打卡题写得我好狼狈,一开始思路有点问题,后面就是对自己的代码到处缝缝补补,最后蒙混过关。只能分享一下大佬的代码,然后我帮大家分享代码的思路。

题目链接: 2824.统计和小于目标的下标对数目

题目描述

在这里插入图片描述

代码思路

 这道题自己写的时候思路比较混乱,于是找了位大佬的代码,自己修改完善了一下,然后来分析。
1.根据题目的要求,我们可以发现,如果对nums集合进行排序,并不会影响结果,所以果断使用sort排序

Collections.sort(nums);

我以前只用过数组的sort排序,集合的排序我是第一次使用,真香

2.然后因为是两个值的运算,可以使用双指针法,一个从左到右,一个从右到左。利用左指针进行for循环,然后用while循环进行判断当相加大于目标值时,右指针左移,直至停止移动,此时两个指针的距离就是符合条件的数目。然后左指针右移,进行下一个循环。

代码纯享版

class Solution {
    public int countPairs(List<Integer> nums, int target) {
        if(nums.size() <= 1) return 0;
        Collections.sort(nums);
        int sum = 0;
        for (int i = 0, j = nums.size() - 1; i < j; i++) {
            while (i < j && nums.get(i) + nums.get(j) >= target) {
                j--;
            }
            sum += j - i;
        }
        return sum;
    }
}

代码逐行解析版

class Solution {
    public int countPairs(List<Integer> nums, int target) {
        if(nums.size() <= 1) return 0; //集合长度小于1,数目位0
        Collections.sort(nums); //对集合进行sort排序
        int sum = 0; //统计数目
        for (int i = 0, j = nums.size() - 1; i < j; i++) { //初始时左指针i=0,右指针j=nums.size() - 1
            while (i < j && nums.get(i) + nums.get(j) >= target) { //让右指针左移到满足要求的位置
                j--;
            }
            sum += j - i; //两个指针的距离就是这次循环中满足条件的个数,然后i++让左指针右移,进入下一次循环
        }
        return sum;//返回统计数目
    }
}

我的代码

我的思路也是双指针,但由于没有和上面的解法一样排除掉一些一定不成立的过程,而且思路比较混乱,所以就不作为主要思路来分析了。

class Solution {
    public int countPairs(List<Integer> nums, int target) {
        if(nums.size() <= 1) return 0;
        Collections.sort(nums);
        int left = 0, right = 1;
        int sum = 0;
        while(left < nums.size() - 1){
            if(nums.get(left) + nums.get(right) >= target){ //不符合要求时
                left++; 
                right = left + 1;
                if(right > nums.size() - 1) break;
            }
            else if(nums.get(left) + nums.get(right) < target ){ //符合要求时
                sum++;
                if(right < nums.size() - 1) right++; //根据right所在的不同情况就行移动
                else {
                    left++;
                    right = left + 1;
                }
            }
        }
        return sum;
    }
}

结语

 如果对这道题的分享对您有帮助,可以点个关注,我会每天更新力扣题目的讲解,与大伙儿一起向前迈进!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/190116.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

84基于matlab的数字图像处理

基于matlab的数字图像处理&#xff0c;数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。 84matlab数字图像处理图像增强 (xiaohongshu.com)https://www.xiaohongshu.com/explore/656219d80000000032034dea

python+pytest接口自动化(1)-接口测试基础

一般我们所说的接口即API&#xff0c;那什么又是API呢&#xff0c;百度给的定义如下&#xff1a; API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;是一些预先定义的接口&#xff08;如函数、HTTP接口&#xff09;&#xff0c;或指软件系…

【数据库基础】

目录&#xff1a; 前言什么是数据库主流数据库服务器&#xff0c;数据库&#xff0c;表关系MySQL架构SQL分类存储引擎 前言 剑指offer&#xff1a;一年又1天 什么是数据库 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库? 文件保存数据有以下几个缺点&#xff1a;…

数据结构之时间复杂度与空间复杂度

1.算法效率 1.1 如何衡量一个算法的好坏&#xff1f; 比方说我们非常熟悉的斐波拉契数列&#xff1a; long long Fib(int N) {if(N < 3)return 1;return Fib(N-1) Fib(N-2); } 递归实现方式非常简洁&#xff0c;但一定好吗&#xff1f;如何衡量其好与坏&#xff1f; 1…

ES6之class类

ES6提供了更接近传统语言的写法&#xff0c;引入了Class类这个概念&#xff0c;作为对象的模板。通过Class关键字&#xff0c;可以定义类&#xff0c;基本上&#xff0c;ES6的class可以看作只是一个语法糖&#xff0c;它的绝大部分功能&#xff0c;ES5都可以做到&#xff0c;新…

AndroidStudio2022.3.1 Patch3使用国内下载源加速

记录一下这个版本的as在使用国内下载源加速碰到的诸多问题。 一、gradle-8.0-bin.zip下载慢 编辑项目文件夹/gradle/wrapper/gradle-wrapper.properties&#xff0c;文件内容改为如下&#xff1a; #Fri Nov 24 18:50:06 CST 2023 distributionBaseGRADLE_USER_HOME distribu…

如何获得微软MVP徽章

要成为微软MVP&#xff0c;需要在特定领域成为专家&#xff0c;并积极参与社区&#xff0c;为其他人提供帮助和支持。以下是一些步骤可以帮助你成为MVP&#xff1a; 在特定领域成为专家&#xff1a;要成为MVP&#xff0c;需要在某个领域具有专业知识和经验。这可以通过阅读相关…

OD机考真题搜集:叠积木1

题目 有一堆长方体积木,它们的高度和宽度都相同,但长度不一。 小橙想把这堆积木叠成一面墙,墙的每层可以放一个积木,或将两个积木拼接起来,要求每层的长度相同。若必须用完这些积木,叠成的墙最多为多少层?如下是叠成的一面墙的图示,积木仅按宽和高所在的面进行拼接。 …

新版idea如何开启多台JVM虚拟机

1.看看自己的项目 2.可能开始的时候啥也没有&#xff0c;就点Run Configuration Type 3.再点击Edit Configurations... 4.点击号添加SpringBoot 5.主类选择一下&#xff0c;一般就一个&#xff0c;点他选了就行。 6.然后点击Modify Options 选择添加add VM Options 7.点击appl…

抵御网络威胁的虚拟盾牌:威胁建模

威胁建模是一个允许您管理因日益复杂且不断变化的 IT 安全威胁而产生的风险的过程。为了保护敏感系统和数据&#xff0c;主动了解和应对这些威胁至关重要。 威胁建模是识别、评估和减轻这些威胁的关键过程&#xff0c;确保组织准备好面对不断出现的新的复杂挑战。 本文将详细…

jmeter测试dubbo接口

本文讲解jmeter测试dubbo接口的实现方式&#xff0c;文章以一个dubbo的接口为例子进行讲解&#xff0c;该dubbo接口实现的功能为&#xff1a; 一&#xff1a;首先我们看服务端代码 代码架构为&#xff1a; 1&#xff1a;新建一个maven工程&#xff0c;pom文件为&#xff1a; 1…

Matlab数学建模算法详解之混合整数线性规划 (MILP) 算法(附完整实现代码)

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

上手 Promethus - 开源监控、报警工具包

名词解释 Promethus 是什么 开源的【系统监控和警报】工具包 专注于&#xff1a; 1&#xff09;可靠的实时监控 2&#xff09;收集时间序列数据 3&#xff09;提供强大的查询语言&#xff08;PromQL&#xff09;&#xff0c;用于分析这些数据 功能&#xff1a; 1&#xff0…

Python NeuralProphet库: 高效时间序列预测的利器

更多Python学习内容&#xff1a;ipengtao.com 时间序列数据在许多领域中都扮演着关键的角色&#xff0c;从股票价格到气象数据。为了更准确地预测未来趋势&#xff0c;机器学习领域涌现出许多时间序列预测的方法和工具。其中&#xff0c;NeuralProphet库是一个强大的工具&#…

安卓吸顶效果

当列表滑动时&#xff0c;图片逐渐消失&#xff0c;toolBar悬停在头部。 <?xml version"1.0" encoding"utf-8"?><androidx.coordinatorlayout.widget.CoordinatorLayoutxmlns:android"http://schemas.android.com/apk/res/android"x…

【LeetCode】挑战100天 Day17(热题+面试经典150题)

【LeetCode】挑战100天 Day17&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-192.1 题目2.2 题解 三、面试经典 150 题-193.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&…

智能优化算法应用:基于鲸鱼算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于鲸鱼算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于鲸鱼算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鲸鱼算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

Nginx(八) aio sendfile directio 组合使用测试(1)

thread_pool default threads32 max_queue65535; http {aio threadsdefault;directio 2m;sendfile on;sendfile_max_chunk 1m;#### Gzip压缩服务配置#gzip off; # 设置是否开启gzip压缩服务&#xff0c;用于提高传输速度&#xff0c;默认关闭(off)。#gzi…

告别软件代码,硬件攻城狮也能DIY的 PD DRP+OTG 芯片来了

随着 USB-C 接口的普及&#xff0c;越来越多的设备开始采用这种接口。由于 USB-C接口的高效性和便携性&#xff0c;使各种设备之间的连接和数据传输变得非常方便快捷&#xff0c;它们不仅提供了强大的功能&#xff0c;还为我们的日常生活和工作带来了极大的便利&#xff0c;USB…

烧烤店点餐外卖配送管理小程序作用如何

烧烤是人们爱吃的食品之一&#xff0c;尤其到了晚上商业小吃街&#xff0c;烧烤店里往往是坐满了人&#xff0c;甚至还有排队的&#xff0c;从业商家众多&#xff0c;足可见该餐饮细分领域在市场中的欢迎程度。 而在实际经营中&#xff0c;烧烤店经营痛点也不小。 随着互联网…