天天看点

leetcode刷题-Day2-数组leetcode刷题-Day2-数组

leetcode刷题-Day2-数组

leetcode-977.有序数组的平方

题目:给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

直接双指针排序

int* sortedSquares(int* nums, int numsSize, int* returnSize){
    int i;
    for(i=0;i<numsSize;i++){
        if(nums[i]<0)
            nums[i]=-nums[i];
            nums[i]=nums[i]*nums[i];
    }
    
    *returnSize=numsSize;
    //printf("rts=%d",*returnSize);//调试信息,确认returnSize的作用
    
    int left,right;
    left=0;
    right=1;
    while(right<numsSize){
        if(nums[left]<=nums[right]){
            left++;
            right++;
        }
        else{
            int q=nums[left];
            nums[left]=nums[right];
            nums[right]=q;
            if(left>0){
                left--;
                right--;
            }
        }
    }
    return nums;
}
           

209.长度最小的子数组

题目:

给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/minimum-size-subarray-sum

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

分析题目可知,使用双指针滑动窗口可以找到子数组,而确定最长子数组则需要全局变量max,判断哪个是最长子数组。

如果题目提高难度,返回子数组,还需额外添加参数记录子数组起始位置。

代码如下:

int minSubArrayLen(int target, int* nums, int numsSize){
    int minlen=numsSize;
    int left,right;
    int key=0;
    if(*nums>=target)
            return 1;
    if(numsSize==1){
        if(*nums>=target)
            return 1;
        else
            return 0;
    }
    left=0;
    right=1;
    int i;
    int sum=0;
    for(i=left;i<=right;i++){
            sum+=nums[i];
            //printf("//sum=%d",sum);
        }
    while(right<numsSize){
        //判断串口内的子数组和是否大于目标值
        
        if(sum>=target){
            key =1;
            minlen=(right-left+1)<minlen? (right-left+1) : minlen;
            left++;
            sum-=nums[left-1];  //在内部每次遍历求和数据量大起来会超时
        }
        else{
            right++;
            if(right<numsSize)
                sum+=nums[right];
        }
    }
    if(key)
        return minlen;        
    return 0;
    }
           

59.螺旋矩阵II

题目:

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

涉及到二维指针问题,后续再完善。