算法解释

  • 双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。
  • 若两个指针指向同一个数组,遍历的方向相同且不会相交,则也称为滑动窗口;
  • 若两个指针指向同一个数组,但是遍历的方向相反,则可以用来进行搜索,待搜索的数组往往是排好序的。

167. 两数之和

  • 我的代码:

88. 合并两个有序数组

  • 我的想法:非常朴素的想法,就是把nums2每个元素放进nums1的后面,然后对整个nums1进行排序。
  • 最优算法:两个数组都已经进行过升序排列,最优时间复杂度和空间复杂度的做法是在两个数组最大的元素上置指针,将两者中元素较大的值置于nums1的最后,然后依次排序。这样时间复杂度为O(m+n),空间复杂度为O(1)。
  • 按照最优算法的思路进行代码复现:

  • 本来想按照最优思路自己复现出来,结果写出来的代码又臭又长还没考虑到边界情况,再看看人家简洁的代码,自愧不如。这题主要提供一种逆序双指针解决问题的思路。

142.环形列表2

  • 对于链路找环路问题,有一个通用的解法--快慢指针(Floyd判圈法);
  1. 给定两个指针,分别命名为slow和fast,起始位置在链表的开头;每次fast前进两步,slow前进一步;
  • 如果fast可以走到尽头,那么说明没有环路;
  • 如果fast可以无限走下去,说明一定有环路,且一定存在某个时刻solw和fast相遇;
  1. 当slow和fast第一次相遇时,将fast重新移到链表开头,并让slow和fast每次都前进一步;
  2. 当slow和fast第二次相遇时,相遇的节点即为环路的开始点。
  • 代码:

76.最小覆盖子串

滑动窗口;这个题好难,战略放弃一下;;

633.平方数之和

  • 思路:双指针;但是我一开始没想到j的初值可以设置为目标数开根号,所以测试用例特别大的时候,运行时间就超过了限制;本来是应该想到的,被easy的题目冲昏了头脑,忽略了很多细节。
  • 我的代码:

680.验证回文串Ⅱ

在不考虑删改的情况下,如何判断一个字符串是不是回文串?
  • 在一个字符串的头和尾各置一个指针,分别为left指针和right指针;若l和r对应的元素相等,则各自向中间移动一位,直到指针相遇,指向同一个元素,则该字符串是回文串。
  • 若left指针和right指针指向的元素并不相等,则判断left指针向右挪一位和right指针向左挪一位的剩下的字符串是否是回文串。
  • 官方代码:

  • charAt方法

    charAt()方法返回指定索引位置的char值。索引范围为0~length()-1,如: str.charAt(0)检索str中的第一个字符,str.charAt(str.length()-1)检索最后一个字符。

双指针_Leetcode刷题_13/100的更多相关文章

  1. LeetCode刷题总结-双指针、位运算和分治法篇

    本文总结LeetCode上有关双指针.位运算和分治法的算法题,推荐刷题总数14道.具体考点分析如下图: 一.双指针 1.字符串和数组问题 题号:424. 替换后的最长重复字符,难度中等 题号:828. ...

  2. C#LeetCode刷题-双指针

    双指针篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串   24.5% 中等 11 盛最多水的容器   43.5% 中等 15 三数之和   16.1% 中等 16 最接近的三数之和   3 ...

  3. LeetCode刷题记录(python3)

    由于之前对算法题接触不多,因此暂时只做easy和medium难度的题. 看完了<算法(第四版)>后重新开始刷LeetCode了,这次决定按topic来刷题,有一个大致的方向.有些题不止包含 ...

  4. 看完互联网大佬的「LeetCode 刷题手册」, 手撕了 400 道 Leetcode 算法题

    大家好,我是 程序员小熊 ,来自 大厂 的程序猿.相信绝大部分程序猿都有一个进大厂的梦想,但相较于以前,目前大厂的面试,只要是研发相关岗位,算法题基本少不了,所以现在很多人都会去刷 Leetcode ...

  5. LeetCode刷题模板(1):《我要打10个》之二分法

    Author       :  叨陪鲤 Email         : vip_13031075266@163.com Date          : 2021.01.23 Copyright : 未 ...

  6. NOI题库分治算法刷题记录

    今天晚自习机房刷题,有一道题最终WA掉两组,极其不爽,晚上回家补完作业欣然搞定它,特意来写篇博文来记录下 (最想吐槽的是这个叫做分治的分类,里面的题目真的需要分治吗...) 先来说下分治法 分治法的设 ...

  7. NOI题库刷题日志 (贪心篇题解)

    这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制:  1000ms  内存限制:  65536kB 描述 在一个平面上,如果有两个点( ...

  8. 用js刷题的一些坑

    leecode可以用js刷题了,我大js越来越被认可了是吧.但是刷题中会因为忽略js的一些特性掉入坑里.我这里总结一下我掉过的坑. 坑1:js中数组对象是引用对象 js中除了object还有数组对象也 ...

  9. PE刷题记录

    PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...

  10. P1707 刷题比赛

    P1707 刷题比赛 10通过 38提交 题目提供者nodgd 标签倍增递推矩阵洛谷原创 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 不科学 题目背景 nodgd是一个喜欢写程序的同学, ...

随机推荐

  1. docker停止所有窗容器

    docker中 启动所有的容器命令docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) docker中 关闭所有的容器命令dock ...

  2. loadrunner---脚本录制常见问题

    一:loadrunner录制脚本时ie浏览器不弹出? 1.IE浏览器取消勾选[启用第三方浏览器扩展]启动IE,从[工具]进入[Internet选项],切到高级,去掉[启用第三方浏览器扩展(需要重启动) ...

  3. [转]B树与B+树----mysql的索引结构

    B树 和B+树是 MySQL索引使用的数据结构,对于索引优化和原理理解都非常重要,下面我的写文章就是要把B树,B+树的神秘面纱揭开,让大家在面试的时候碰到这个知识点一往无前,不再成为你的知识盲点! 1 ...

  4. git切换到某个tag

    git checkout tags/some_tag_name -b a_new_branch_name

  5. luna lunatic

    Luna是罗马神话的月神.英语中Lunacy.Lunatic等意指疯狂的字语源均来自Luna.月亮的阴晴圆缺影响地球的潮汐涨退甚至生物周期,故此古时的人们相信月亮拥有使人疯狂的魔力,人狼等传说亦是因此 ...

  6. sqlyog连接hive解决方案

    解决步骤:(代码无需修改直接按顺序复制粘贴到Linux命令即可)1.需要在cent7中开放端口,开放端口需要开启防火墙.systemctl stop firewalld.service关闭防火墙sys ...

  7. 帮你躲坑:pip install tensorflow 报错怎么办,import tensorflow 报错怎么办?

    补一补:什么是TensorFlow? 一句话介绍: Google 开源的基于数据流图的科学计算库,适合用于机器学习.深度学习等人工智能领域 百度百科的介绍: TensorFlow是谷歌基于DistBe ...

  8. 用find和xargs处理文件名中带空格的文件

    我们经常用find和xargs来进行批处理文件. 常见的用法如:find ./ -name ".jpg" | xargs cp -t ./JPEGImages ,实现将当前目前下所 ...

  9. vscode - plug - scss转css

    vscode - plug - scss转css 参考资料 sass笔记(完结)安装,使用,vscode中设置easy sass,嵌套,变量,混合,循环,分支 vscode配置 easy sass E ...

  10. 逆向学习物联网-网关W5500-00课程目的