![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
双指针法
文章平均质量分 63
快慢指针、相对指针等
思变。
知道的越多,不知道的越多
展开
-
151. 反转字符串中的单词 (中等)
利用split(“ ”)根据空格分割字符串,后再循环分割结果,依次去除空格append到StringBuilder,再append空格即可。= ’ ’ 的下标 i,这里以第一个单词进行为演示:" eulb si yks eht" ==反转=> " blue si yks eht" ==移位=> “blue si yks eht”返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。如果字符串在你使用的编程语言中是一种可变数据类型,请尝试使用 O(1) 额外空间复杂度的 原地 解法。原创 2023-04-13 22:12:45 · 39 阅读 · 0 评论 -
【字符串 + 双指针】剑指 Offer 05. 替换空格
字符串,判断每个字符是否 = ’ ',根据不同情况向StringBuilder中拼接即可,时间复杂度O(n),使用了额外空间StringBuilder,复杂度为O(n)3、利用双指针这里从后向前根据情况填充字符即可。占三个字符,而原字符串已经存在一个空格,再加上。就是返回字符串最终的长度,需要拼接的。中的每个空格替换成"%20"。指向最终字符串结尾,这样一来,的双空格,所以得出以上结论。请实现一个函数,把字符串。两个空格,最后得出的。原创 2023-04-12 16:42:21 · 36 阅读 · 0 评论 -
【字符串 + 双指针】541.反转字符串 II(简单)
与思路一相同,实现方式略微不同。,从字符串开头算起,每计数至。个,则将剩余字符全部反转。个字符,其余字符保持原样。原创 2023-04-12 09:51:32 · 74 阅读 · 0 评论 -
【字符串】344. 反转字符串(简单)
定义双指针left 和 right, left指向数组头部元素,right指向数组尾部,每次两两交换,同时将left-- , right++,注意:因为是两两相交换,所以循环s.length() / 2次。编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。输入数组、使用 O(1) 的额外空间解决这一问题。这样就可以实现使用O(1)的空间复杂度完成此题目。不要给另外的数组分配额外的空间,你必须。原创 2023-04-12 09:49:58 · 36 阅读 · 0 评论 -
【排序 + 快慢指针】18. 四数之和 (中等)
四数之和,和15.三数之和是一个思路,都是使用双指针法, 基本解法就是在15.三数之和的基础上再套一层for循环。使用双指针可以将原本O(n ^ 4) 降为 O(n ^ 3)感兴趣可以先去看 15.三数之和,上面有题目的链接。请你找出并返回满足下述全部条件且不重复的四元组。原创 2023-04-11 17:01:55 · 31 阅读 · 0 评论 -
【排序 + 快慢指针】15. 三数之和 (中等)
同时在循环体内定义快慢指针,left = i + 1;给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i! 如果nums[i] + nums[left] + nums[right] < 0,说明当前三数之和小了,将left++,向右移动一位,增加当前和。3、移动快慢指针的条件限制:如果nums[i] + nums[left] + nums[right] > 0 ,说明当前三数之和大了,将right–,向左移动一位,减小当前和。原创 2023-04-11 15:58:03 · 37 阅读 · 0 评论