双指针
文章平均质量分 62
追梦偏执狂
在疯狂与不疯狂之间游荡,就很nice
展开
-
力扣:125. 验证回文串
题目链接:125. 验证回文串题目:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true解释:“amanaplanacanalpanama” 是回文串示例 2:输入: “race a car”输出: false解释:“raceacar” 不是回文串提示:1 <= s.length <=原创 2022-05-15 23:14:49 · 108 阅读 · 0 评论 -
力扣:287. 寻找重复数
题目链接:287. 寻找重复数题目:给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。示例 1:输入:nums = [1,3,4,2,2]输出:2示例 2:输入:nums = [3,1,3,4,2]输出:3提示:1 <= n <= 1原创 2022-05-15 21:42:56 · 419 阅读 · 0 评论 -
力扣:75. 颜色分类
题目链接:75. 颜色分类题目:给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库的sort函数的情况下解决这个问题。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]提示:n == nums.length1原创 2022-05-09 11:37:39 · 429 阅读 · 0 评论 -
力扣:167. 两数之和 II - 输入有序数组
题目链接:167. 两数之和 II - 输入有序数组题目:给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。 以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1原创 2022-04-28 20:52:49 · 509 阅读 · 0 评论 -
力扣:151. 颠倒字符串中的单词
题目链接:151. 颠倒字符串中的单词题目:给你一个字符串 s ,颠倒字符串中 单词 的顺序。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。示例 1:输入:s = “the sky is blue”输出:“blue is sky the”示例 2原创 2022-04-22 22:13:51 · 219 阅读 · 0 评论 -
力扣:剑指 Offer 05. 替换空格
题目链接:剑指 Offer 05. 替换空格题目:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”限制:0 <= s 的长度 <= 10000思路和算法:如果想把这道题目做到极致,就不要只用额外的辅助空间了。首先计算字符串中空格个数,然后扩充字符串长度到每个空格替换成"%20"之后的大小。然后从后向前替换空格,也就是双指针法,过程如下:i指向旧长度的末尾,j原创 2022-04-22 17:37:47 · 233 阅读 · 0 评论 -
力扣:541. 反转字符串 II
题目链接:541. 反转字符串 II题目:给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。示例 1:输入:s = “abcdefg”, k = 2输出:“bacdfeg”示例 2:输入:s = “abcd”, k = 2输出:“bacd”提示:1 <= s.l原创 2022-04-21 21:11:49 · 470 阅读 · 0 评论 -
力扣:344. 反转字符串
题目链接:344. 反转字符串题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。示例 1:输入:s = [“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]提示:1 <原创 2022-04-21 20:31:58 · 175 阅读 · 0 评论 -
力扣:18. 四数之和
题目链接:18. 四数之和题目:给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一 一对应,则认为两个四元组重复):0 <= a, b, c, d < na、b、c 和 d 互不相同nums[a] + nums[b] + nums[c] + nums[d] == target 你可以按 任意顺序 返回答案 。示原创 2022-04-21 15:27:34 · 360 阅读 · 0 评论 -
力扣:15. 三数之和
题目链接:15. 三数之和题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]提示:0 <= nums.原创 2022-04-21 10:28:53 · 236 阅读 · 0 评论 -
力扣:88. 合并两个有序数组
题目链接:88. 合并两个有序数组题目:给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。示例原创 2022-04-20 10:42:24 · 171 阅读 · 0 评论 -
力扣:141. 环形链表
题目链接:141. 环形链表题目:给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tr原创 2022-04-15 20:35:27 · 250 阅读 · 0 评论