双指针

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

题目引入:

167. Two Sum II - Input array is sorted (Easy)

88. Merge Sorted Array (Easy)

快慢指针

142. Linked List Cycle II (Medium)

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

滑动窗口

76. Minimum Window Substring (Hard)

题解
本题使用滑动窗口求解,即两个指针 lr 都是从最左端向最右端移动,且 l 的位置一定在
r 的左边或重合。注意本题虽然在 for 循环里出现了一个 while 循环,但是因为 while 循环负责移
l 指针,且 l 只会从左到右移动一次,因此总时间复杂度仍然是 O(n)。本题使用了长度为 128
的数组来映射字符,也可以用哈希表替代;其中 chars 表示目前每个字符缺少的数量,flflag 表示
每个字符是否在 T 中存在。

错题总结

680. 验证回文串(难度:中等)

给你一个字符串 s最多 可以从中删除一个字符。

请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false 。

提交的错误答案:

class Solution {public boolean validPalindrome(String s) {if (s.length()==1){return true;}StringBuffer stringBuffer = new StringBuffer(s);if (stringBuffer.length()%2==1){stringBuffer.deleteCharAt(stringBuffer.length()/2);}Stack<Character> sta = new Stack<Character>();for (int i=0; i<stringBuffer.length()/2; i++){sta.push(stringBuffer.charAt(i));}for (int i=stringBuffer.length()/2; i<stringBuffer.length(); i++){if (sta.peek()!=stringBuffer.charAt(i)){return false;}sta.pop();}if (sta.empty()){return true;}return false;}
}

这里我没有读清楚题目,没有注意到删除一个字符仍然能成为回文字符串这一条件。这里我是直接验证普通回文串。思想是若字符串长度为奇数,则删除中间字符,若为偶数则将将前一半字符串压入栈中,再遍历后一半字符串,若相同则弹出栈,若遍历结束后栈为空则为回文字符串。若只是验证普通回文字符串则此解法是正确的,此题目正确答案参考官方解释。

524. 通过删除字母匹配到字典里最长单词(难度:中等)

给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。

如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。

这里我思考了8分钟,仍然没有思路,于是我参考了官方解释。

此算法思想为:先遍历字符串列表,判断字符串是否为参数的字串,使用双指针法比对,初始时两指针分别指向各字符串的第一个字符,若相同则同时后移一位,若不同则则只移动参数字符串,直到列表字符串移至最后一位则为字串,待判断出字串后则赋值给res,再判断列表中其他字符串,若遇到长度更长与字母序更小的字符串则更新答案。

官方代码:

class Solution {public String findLongestWord(String s, List<String> dictionary) {String res = "";for(String t : dictionary){int i=0, j=0;while(i<t.length() && j<s.length()){if(t.charAt(i) == s.charAt(j)){++i;}++j;}if(i==t.length()){if(t.length() > res.length() || (t.length() == res.length() && t.compareTo(res) <0)){res = t;}}}return res;}
}

算法题——双指针(错题总结)相关推荐

  1. 《考研计算机专业基础综合考试解析配套1000题》错题集20155314刘子健

    <考研计算机专业基础综合考试解析配套1000题>错题集 By20155314刘子健 目录 数据结构部分 第一章 线性表 第二章 栈.队列和数组 第三章 树与二叉树 第四章 图 第五章 查找 ...

  2. 记录一下自己刷题的错题

    记录一下自己刷题的错题 1.小v所在的公司即将举行年会,年会方案设计过程中必不可少的一项就是抽奖活动.小v在本次活动中被委以重任,负责抽奖活动的策划:为了让中奖的礼物更加精美且富有神秘感,打算采用礼品 ...

  3. Java基础题(错题小结)

    Java基础题(错题小结) 1. 字符串 1.1 题1 下面程序的输出是: String x="fmn"; x.toUpperCase(); String y = x.replac ...

  4. 记录一下自己牛客网刷题的错题

    1.广义表即我们通常所说的列表(lists).它放松了对表元素的原子性限制,允许他们有自身结构.那么广义表E((a,(a,b),((a,b),c)))的长度和深度分别为: 正确答案:1和4 解析:广义 ...

  5. 【计算机与UNIX汇编原理⑫】——汇编考前复习【重要知识点 + 基础题 + 易错题 + 难题解析】

    ✅ 本文主要是在汇编考试前的做的复习整理. 文章目录 第一章:微型计算机基础 第二章:80X86微处理器 第三章:汇编语言指令集 第四章:汇编语言程序设计 五.参考附录 EDG 加油!⌨️ 上一篇文章 ...

  6. HCIP/HCIE RoutingSwitching/Datacom备考宝典题库系列(一) OSPF题库(OSPF难理解题 易错题 易混题总结)

    OSPF 协议不同的网络类型都可以形成 FULL 状态的邻接关系 正确 下面关于 OSPF 的描述正确的是: 选B OSPF采用SPF算法 OSPF LSUpdate不是周期性更新 而是触发式更新 O ...

  7. 全国计算机三级考试网络技术考过指南(一周就够了),知识点大全以及题库原题易错题补充

    计算机三级考试网络技术考过指南 https://blog.csdn.net/qq_36829091/article/details/100593147 本篇文章是在上文基础上做的补充,主要针对其中的第 ...

  8. 计算机网络题库---错题本

    (一)老生常谈 第一章: 1.什么是计算机网络?其主要功能是什么? 解答: 利用通信设备和线路,将分布在地理位置不同的.功能独立的多个计算机系统连接起来,以功能完善的网络软件实现网络中资源共享和信息传 ...

  9. 2020大学生网络安全知识竞赛总决赛模拟题易错题集(3)

    1.DES是一种使用密钥加密的块算法,其英文全称是( ) A.Data Encryption Standard:B.Dynamic Encryption Standard:C.Dynamic Elli ...

  10. 2022年注册会计师财务管理历年真题易错题详解第一章

    1.在资本市场有效的情况下,假设股东投资资本不变,下列各项中能够体现股东财富最大化这一财务管理目标的是().(单选题) A.利润最大化 B.每股收益最大化 C.每股股价最大化 D.公司价值最大化 解析 ...

最新文章

  1. python填写excel-Python向excel中写入数据的方法
  2. JAVA中反射的实现过程和作用分别是什么?
  3. MySQL——分页查询
  4. 四种依恋类型_“我值得被爱吗?”| 如何在亲密关系中培养安全型依恋
  5. 自定义ArcView-构造拓展性高的view
  6. web渗透--4--web渗透测试清单
  7. excel下拉列表多选框_将列表框添加到Excel工作表
  8. Centos7 Firewalld 自定义规则
  9. 在项目中后端开发所需要掌握的前端知识
  10. 不知道如何raw转换成jpg格式?可以试试这几个软件
  11. Maven项目引入JS,css等文件的问题
  12. 斯蒂文斯理工学院计算机科学硕士,2020年斯蒂文斯理工学院排名TFE Times美国最佳计算机科学硕士专业排名第80...
  13. 文本框的左视图不见了?
  14. ValueError: Invalid format specifier
  15. java中的常见异常1 -- 新手上路,减速慢行
  16. 解耦java_工厂模式实现解耦
  17. (1)Proteus 8.9上的STM32仿真系列(HAL)---流水灯
  18. 励志共勉一句话经典语录
  19. FPGA-基于UART的QVGA显示(一)(实现PC端发送字母数字汉字的分别显示)
  20. 写给我的第一部美剧--《越狱》

热门文章

  1. xx年xx月xx日xx时xx分xx秒——if版本
  2. 怎么用迅雷下载python_迅雷违规资源高速下载解决办法 python 源码
  3. python制作小黄人唱歌_小黄人音效制作方法图文教程
  4. 微信公众号开发------长链接转短链接接口
  5. 完美解决【 Failed to clean project: Failed to delete XXX】
  6. Day3 python基础3
  7. EOS中governor应用管理无法添加应用无法正确添加
  8. rancher忘记admin密码
  9. 最全Java成神学习路线总结!!!
  10. AI微信小程序源码下载照片AI转换动漫照片源码安装简单无需服务器域名