课程学习–算法总结:数组专题(第2期)–双指针
一、 快慢指针
int fast = 0;
int slow = 0;
for (; fast < nums.length; fast++) {
if (nums[fast] != val) {
nums[slow] = nums[fast];
slow++;
}
}
return slow;
二、 左右指针
int left = 0;
int right = nums.length - 1;
int i = nums.length - 1;
int[] res = new int[nums.length];
while (left <= right) {
if (nums[left] * nums[left] >= nums[right] * nums[right]) {
res[i] = nums[left] * nums[left];
left++;
} else {
res[i] = nums[right] * nums[right];
right--;
}
i--;
}
return res;