利用双指针来求解,利用新数组来求解,左指针和右指针对比,将新值对比填写进新数组中
var sortedSquares = function(nums) {
let i = 0, j = nums.length - 1,k = nums.length -1;
let result = new Array(k).fill(0);
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--;
}
}
return result;
};
一种很新奇的解题思路,根据题,一开始可能自己还想着调用数组的api来解,看了视频才觉得好美妙,希望自己以后能善用,多刷多刷
var removeElement = function(nums, val) {
// 慢指针代表要操作的数组元素下标
// 快指针代表要操作数组元素的值
let slow = 0,fast = 0;
while(fast < nums.length) {
if(nums[fast] !== val) {
nums[slow] = nums[fast];
slow++;
}
fast++;
}
return slow
};
循环++右指针,和左指针一起找到第一个大于target的区间,[left,right],然后不断右移左指针,和之前的区间长度相比,谁小就取谁
var minSubArrayLen = function(target, nums) {
// 滑动窗口的思想,定义前后指针
let left = 0 , right = 0;
let sum = 0, res = nums.length+1;
while(right < nums.length) {
sum += nums[right]
if(sum >= target) {
while(sum - nums[left] >= target) {
sum = sum - nums[left];
left++;
}
res = Math.min(res,right - left + 1)
}
right++;
}
return res === nums.length + 1 ? 0 :res
};