LeetCode 977.有序数组的平方
int* sortedSquares(int* nums, int numsSize, int* returnSize){ int *result = malloc(sizeof(int)*numsSize); *returnSize = numsSize; for (int left = 0, right = numsSize -1, len = numsSize - 1; left <= right; ) { if (nums[left]*nums[left] > nums[right]*nums[right]) { result[len--] = nums[left]*nums[left]; left++; }else { result[len--] = nums[right]*nums[right]; right--; } } return result; }
数组类型的题目已经是第二天了,目前二分法和双指针已经大概有了了解,昨天的双指针使用范围别于今天的题目,昨天双指针基本上是快慢指针的使用,基于同一起始位置依据条件使得两个指针前进位置不同。
今天的双指针题目,加上变种双指针滑动窗口,都是从数组两边动态去收缩或者动作。
LeetCode 209.长度最小的子数组
int minSubArrayLen(int target, int* nums, int numsSize){
int i = 0;
int sum = 0;
int subLength = 0;
int result = INT32_MAX;
for (int j = 0; j < numsSize; j++)
{
sum += nums[j];
while (sum >= target)
{
subLength = (j - i + 1);
result = result < subLength ? result : subLength;
sum -= nums[i++];
}
}
return result == INT32_MAX ? 0 : result;
}
螺旋矩阵今天没时间,后面补一下