【LeetCode笔记】剑指 Offer 57-. 和为s的两个数字 (Java、对撞双指针)

文章目录

  • 题目描述
  • 思路 & 代码
      • 二刷

题目描述

  • 很好的一道思路题,可以用来理解状态、双指针。
  • 注意:数组有序,否则需要用哈希表来做。
    在这里插入图片描述

思路 & 代码

  • 双指针:从头、尾往里走,重点在于为何不会丢失解
  • 状态 S(x, y):nums[x] + nums[y]
  • 直接结合下图和代码注释理解吧~

图片来源于 leetcode 题解的 Krahets 大佬

class Solution {public int[] twoSum(int[] nums, int target) {// 双指针:因为是有序的,否则需要用哈希表来做int left = 0, right = nums.length - 1;// 可消去证明:对于某列,当前 S(x1, right) 已经大于 target了,那么 S(x1+, right) 肯定都更大,因此可以消去。// 某行同理。while(true){// 消去 S(x, right) 的所有状态if(nums[left] + nums[right] > target){right--;}// 消去 S(left, x) 的所有状态else if(nums[left] + nums[right] < target){left++;}else{return new int[]{nums[left], nums[right]};}}}
}

二刷

class Solution {public int[] twoSum(int[] nums, int target) {int left = 0, right = nums.length - 1;while(true) {while(nums[left] + nums[right] > target) {right--;}while(nums[left] + nums[right] < target) {left++;}if(nums[left] + nums[right] == target) {return new int[]{nums[left], nums[right]};}}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python tkinter画笑脸_Python3 tkinter基础 Canvas create_polygon 画三角形

? python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 conda : 4.5.11 type setting : Markdown ? code """ Author : 行初心 Date : 18-9-30 Blog : www.cnblogs.com/xingchuxin GitHub : github.com/GratefulHeartCoder """ fr…

【LeetCode笔记】剑指 Offer 57- II. 和为 s 的连续正数序列(Java、滑动窗口、二刷)

文章目录题目描述思路 & 代码二刷题目描述 花了不少时间来优化 &#xff0c;很好的一道用来理解滑动窗口的题&#xff5e; 思路 & 代码 要点&#xff1a;为了 O(n) 复杂度&#xff0c;左右边界都只能往右走滑动窗口&#xff1a;存储当前连续正数序列 class Soluti…

设计一个类代表二维空间的一个圆。_平面设计基础——点、线、面

平面构成是以研究造型要素及构成规律为内容&#xff0c;讲点、线、面和基本形等视觉要素进行合理的排版合成在一个二维的平面上的艺术表现形式。平面构成是一种视觉形象的二维构成&#xff0c;主要是视觉的二维空间。平面构成他通过对造型要素的理性分析和严格的形式构成训练来…

【LeetCode笔记】剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(Java、二叉树、dfs)

文章目录思路 & 代码代码 & 思路二刷思路 & 代码 应该在二叉树的最近公共祖先之前写 需要用到二叉搜索树的特性&#xff5e; 代码 & 思路 分成四种情况即可&#xff0c;具体见代码注释时间复杂度 O(logn) /*** Definition for a binary tree node.* publ…

python类属性和实例属性_Python 类属性与实例属性,类对象与实例对象用法分析...

本文实例讲述了Python 类属性与实例属性&#xff0c;类对象与实例对象用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;demo.py&#xff08;类属性&#xff0c;所有实例对象共用类属性&#xff09;&#xff1a; # 定义工具类 继承object是为了兼容python2.x class …

【LeetCode笔记】剑指 Offer 65. 不用加减乘除做加法(Java、位运算、二刷)

文章目录题目描述思路 & 代码二刷题目描述 讲道理&#xff0c;感觉算有点难度的题目了 &#xff0c;还是需要时不时看看。 思路 & 代码 正负数情况可以不考虑&#xff08;补码&#xff09;核心&#xff1a;加法 进位和 非进位和关于位运算符的选择&#xff0c;le…

【LeetCode笔记】剑指 Offer 62. 圆圈中最后剩下的数字(Java、约瑟夫环、链表)

文章目录题目描述思路 & 代码链表模拟法数学方法二刷题目描述 约瑟夫环&#xff01;题目可太经典了说实话还是有点难度的 思路 & 代码 链表模拟法 第一想法是用 LinkedList&#xff0c;但是会超时&#xff0c;于是选择ArrayList关键在于 index (index m - 1) %…

python怎么画参数函数图像_详解pandas.DataFrame.plot() 画图函数

首先看官网的DataFrame.plot( )函数 DataFrame.plot(xNone, yNone, kindline, axNone, subplotsFalse, sharexNone, shareyFalse, layoutNone,figsizeNone, use_indexTrue, titleNone, gridNone, legendTrue, styleNone, logxFalse, logyFalse, loglogFalse, xticksNone, ytick…

【学习笔记】第一章——操作系统的概念、功能、特征、发展分类(系统调用、并发共享虚拟异步)

文章目录一. 概念、功能与目标定义&#xff1a;功能1. 系统资源的管理者2. 用户和计算机硬件之间的接口3. 最接近硬件的层次二. 特征1. 并发2. 共享3. 虚拟4. 异步三. 发展分类1. 手工操作阶段2. 单道批处理系统3. 多道批处理系统4. 分时操作系统5. 实时操作系统总结一. 概念、…

【学习笔记】第一章——操作系统的运行机制、体系结构和内核(核心态、原语、大内核 微内核、特权指令)

文章目录总览一. 运行机制&#xff1a;1. 指令2. 处理器状态3. 程序二. 内核1. 定义2. 在层次结构中的划分三. 体系结构总览 重要知识点&#xff1a;特权指令 & 内核程序&#xff0c;只能在核心态执行 一. 运行机制&#xff1a; 1. 指令 指令&#xff1a;CPU 能识别、…

计算机视觉中的多视图几何_基于深度学习的视觉三维重建研究总结

三维重建意义三维重建作为环境感知的关键技术之一&#xff0c;可用于自动驾驶、虚拟现实、运动目标监测、行为分析、安防监控和重点人群监护等。现在每个人都在研究识别&#xff0c;但识别只是计算机视觉的一部分。真正意义上的计算机视觉要超越识别&#xff0c;感知三维环境。…

【学习笔记】第一章——操作系统的中断和异常

文章目录总览一. 诞生、概念和作用二. 分类三. 外中断的处理过程四. 导图总结总览 异常&#xff1a;内中断 一. 诞生、概念和作用 早期计算机&#xff0c;程序只能串行执行&#xff0c;资源利用率低&#xff08;详可见OS 发展分类&#xff09;&#xff0c;为了解决这一问题…

【学习笔记】第一章——操作系统的系统调用(陷入指令、库函数、作用流程)

文章目录总览一. 定义与作用定义作用分类二. 系统调用和库函数的区别三. 系统调用背后的过程导图总结总览 面试常考题了&#xff0c;可得好好看看 XD 一. 定义与作用 定义 作用 结合下图例子理解按照我的理解&#xff0c;就是需要调用系统资源时&#xff0c;需要让 OS 来保…

【学习笔记】第二章——进程的定义、组成、组织方式、特征、状态 转换

文章目录1. 定义 & 组成2. 进程的组织3. 特征1、2、3 总结导图4. 状态5. 转换4、5 总结导图1. 定义 & 组成 一般直接把进程实体称为进程&#xff0c;但是严格来说进程实体强调静态&#xff0c;而进程强调动态。PCB&#xff08;Process Control Block&#xff09;是进程…

派生类构造的时候一定要调用_没钱的时候,一定要记住这三个教训

越没钱的时候&#xff0c;才更能认清身边的一些人和事&#xff0c;当你没钱的时候&#xff0c;一定要知道这三件事&#xff0c;这是现实也是事实啊。【1】没钱才发现钱有多重要人越在没钱的时候&#xff0c;越会发现钱是多么的重要&#xff0c;生活中大多数人的烦恼就是因为没有…

【学习笔记】第二章——进程的控制、通信

文章目录一. 进程控制如何实现进程控制创建终止阻塞 & 唤醒切换总结二. 进程间的通信定义1&#xff09;共享存储2&#xff09;管道通信3&#xff09;信息传递总结一. 进程控制 def: 实现进程状态转换 如何实现进程控制 主要就是 PCB、阻塞\就绪队列以及系统资源之间的改…

bcp 不能调用where 子句_技术分享 || Mysql中IS NULL、IS NOT NULL不能走索引?

mysql中IS NULL、IS NOT NULL不能走索引&#xff1f;不知道是啥原因也不知道啥时候, 江湖上流传着这么一个说法 mysql查询条件包含IS NULL、IS NOT NULL、!、like %* 、like %*%, 不能 使用索引查询&#xff0c; 只能 使用全表扫描。刚入行时我也是这么认为的&#xff0c;还奉为…

【学习笔记】第二章——线程与多线程模型

文章目录一. 线程为什么要引入线程&#xff1a;引入进程后的变化线程的属性线程的实现二. 多线程模型1. 多对一模型2. 一对一模型3. 多对多模型三. 总结一. 线程 为什么要引入线程&#xff1a; 有的进程可能要“同时进行很多事”&#xff08;如QQ的语音、视频、文件处理等&am…

ghelper失效_Ghelper账号+网易云音乐领黑胶会员35天

点击蓝字关注我们&#xff0c;了解更多 追求美好的生活Ghelper账号 :账号&#xff1a;yiyaniosfx.cn密码&#xff1a;yiyanyiyan网易云&#xff1a;打开网易云音乐APP->顶部直播->随便进一个直播->右下角黑胶VIP领取->在次日1点后观看直播可领7天黑胶VIP->每天…

python利用tensorflow识别圆_RaspberryPi上实现佩戴口罩识别——2020电赛F题小记

今年的电赛题目非常反常&#xff0c;传统控制题目基本没有&#xff0c;新增加了测距题目&#xff0c;甚至物联网题目&#xff0c;Ai题目都出来了。直接电赛变算法钞能力大赛。看到F题&#xff1a;测温人脸识别&#xff0c;碰巧我们手头有调好的红外测温模块树莓派openmv&#x…