![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode-双指针
LeetCode-双指针
欢脱的婷子
每天努力一点点!
展开
-
LeetCode # 415 字符串相加
leetcode链接:https://leetcode-cn.com/problems/add-strings/给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。提示: num1 和num2 的长度都小于 5100 num1 和num2 都只包含数字 0-9 num1 和num2 都不包含任何前导零 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式解题思路:使用双指针,分别指向两个字符串的尾部,模拟加...原创 2020-08-18 10:07:44 · 178 阅读 · 0 评论 -
剑指offer -- 两个链表的第一个公共节点
leetcode链接:https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Referen原创 2020-08-04 10:20:42 · 142 阅读 · 0 评论 -
剑指offer -- 链表中倒数第k个节点
leetcode链接:https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2-&g原创 2020-08-01 09:12:34 · 72 阅读 · 0 评论 -
LeetCode # 15 三数之和
给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]解题思路:与之前做的两数之和类似,首先应该将这个数组按照升序排列,然后从第一个元素开始遍历,设置两个指针l,r,将指针l指向...原创 2020-07-12 15:13:41 · 91 阅读 · 0 评论 -
LeetCode # 524 字符串中最长子序列
给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。示例 1:输入:s = "abpcplea", d = ["ale","apple","monkey","plea"]输出:"apple"示例2:输入:s = "abpcplea", d = ["a","b","c"]输出:"a"解题思路:首先应该循环给出的字符数组来找到其中满足.原创 2020-05-27 10:02:16 · 359 阅读 · 0 评论 -
LeetCode # 141 判断链表是否存在环
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。解题思路:使用一前一后两个指针,slow指针每次移动一个元素,fast指针每次移动两个元素,当完成遍历之前,如果链表中存在环,这两个指针总会相遇。public class原创 2020-05-27 09:49:13 · 105 阅读 · 0 评论 -
LeetCode # 88 归并两个有序数组
给你两个有序整数数组nums1 和 nums2,请你将 nums2 合并到nums1中,使 nums1 成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n 。你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]解题思路:归并数组...原创 2020-05-27 09:35:50 · 142 阅读 · 0 评论 -
LeetCode # 680 回文字符串
给定一个非空字符串s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: "aba"输出: True示例 2:输入: "abca"输出: True解释: 你可以删除c字符。解题思路:最简单的判断是否是回文字符串的方法是采用首尾两个指针,向中间移动判断是否相等。由于允许删除一个元素,当遇到元素不同时,可考虑删除前一个或者后一个元素看剩下的字符串是否是回文串。public boolean validPalindrome(String s) { .原创 2020-05-26 15:22:49 · 140 阅读 · 0 评论 -
LeetCode # 345 反转字符串中的元音字符
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: "hello"输出: "holle"示例 2:输入: "leetcode"输出: "leotcede解题思路:首先元音字母应该考虑到大小写字母的情况。再次使用双指针的方式,从字符串的首尾开始向中间遍历,若两侧都遇到元音字母,交换两个指针的内容,若一个指针指向元音,一个指针指向非元音,非元音指针继续移动,直到遇到元音为止。最后直到俩个指针相遇结束。class Solution { priv原创 2020-05-26 14:42:39 · 143 阅读 · 0 评论 -
LeetCode # 633 两数平方和
给定一个非负整数c,你要判断是否存在两个整数a和b,使得a2+ b2= c。示例1:输入: 5输出: True解释: 1 * 1 + 2 * 2 = 5示例2:输入: 3输出: False解题思路:这道题和上一个有序数组的和思路十分类似,主要的区别是如何寻找到指针的开始和结束位置,开始位置可以是0,结束位置从目标和的开方开始,两个指针同样向中间移动,直到相遇或者找到目标和。class Solution { public boolean jud...原创 2020-05-26 14:32:39 · 121 阅读 · 0 评论 -
LeetCode # 167 有序数组的 Two Sum
给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1必须小于index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1,..原创 2020-05-26 14:23:22 · 155 阅读 · 0 评论