也叫快慢指针法,一个指针移动地慢,一个指针移动地快。
leetcode题解中看到地评论:
题目:外面有宝,赶紧捡回来按序放好,不能重样哟 有点像小夫妻俩,老公q在外面淘宝,找到后运回来,找到一个新的宝,老婆p在家里就给挖个新坑放好,最后外面没宝了,就结束咯
中间对话:
老公:老婆,这个家里有没?(if) 老婆:有了。(nums[p] == nums[q])你再找找(q++)
老公:老婆,这个家里有没?(if) 老婆:这个没有,拿回来吧 (nums[p] != nums[q]) 放好了,我到下一个位置等你(p++) 你再继续找吧(q++)
题目训练:
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
int* sortedSquares(int* nums, int numsSize, int* returnSize) {
int i = 0, j = numsSize - 1, k = numsSize - 1;
int* result = malloc(sizeof(int) * numsSize);
*returnSize = numsSize;
while (i <= j)
{
if (nums[i] * nums[i] > nums[j] * nums[j])
{
result[k] = nums[i] * nums[i];
i ++ ;
}
else
{
result[k] = nums[j] * nums[j];
j -- ;
}
k -- ;
}
return result;
}