Leetcode344 反转字符串 (双指针解法)
编写一个函数,其作用是将输出的字符串反转过去。输出字符串以字符数组 s 的模式给出。
不要给另外的数组调配额定的空间,你必须原地批改输出数组、应用 O(1) 的额定空间解决这一问题。
答题:
/**
\* @param {character[]} s
\* @return {void} Do not return anything, modify s in-place instead.
*/
var reverseString = function(s) {
let left = 0;
let right = s.length -1;
let tem;
while(left < right){ tem = s[left];
s[left] = s[right];
s[right] = tem;
left++
right--
}
return s
};
最近真的是学好多货色,leetcode 题刷的有点懈怠,每天都是简略题我重拳出击。
明天就多写点字,顺便总结下双指针的解题技巧。
下面这个题是一个简略的左右指针,还有一个常见的快慢指针,比方 leetcode19 删除链表的倒数第 N 个节点。
对于左右指针,就是依照条件放大所有边界。
尤其是二分查找的题目,通过一个两头数,判断是否满足条件,而后让左边界或者右边界放大来都找寻后果。
对于快慢指针,就是一个快指针一个慢指针,两个指针走的速度不同,指向的意义也不同。比如说上一篇文章中咱们写的挪动零,快指针代表遍历的索引地位,慢指针示意可用于替换的索引地位。而针对删除链表这道题来说,咱们让快指针往前先走 N 个而后再让慢指针开始走。
双指针问题能够说是最常见的遍历优化解决方案了,多做两道题,多几次重拳出击~~