代码随想录算法训练营第2天|长度最小子数组、螺旋矩阵

lc209长度最小的数组

思路

  • 双指针实现较低的时间复杂度
  • 终止节点不断遍历,达到目标和进行窗口收缩

代码

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int minLen = Integer.MAX_VALUE;
        int left = 0;
        int sum = 0;
        for (int right = 0; right < nums.length; right++){
            sum += nums[right];
            while (sum >= target){
                minLen = Math.min(right-left+1, minLen);
                sum -= nums[left];
                left++;
            }
        }
        return minLen == Integer.MAX_VALUE ? 0 : minLen;
    }
}

lc59螺旋矩阵II

思路

  • 确定循环次数、循环不变量
  • 确定四条边遍历时的下标
  • 判断是否存在中心点

代码

class Solution {
    public int[][] generateMatrix(int n) {
        int loop = n / 2, val = 1;
        int[][] res = new int[n][n];
        int i,j,start = 0;
        for (int k = 1; k <= loop; k++){
            for (j = start; j < n-k; j++){
                res[start][j] = val++;
            }
            for (i = start; i < n-k; i++){
                res[i][j] = val++;
            }
            for (; j > start; j--){
                res[i][j] = val++;
            }
            for (; i > start; i--){
                res[i][j] = val++;
            }
            start++;
        }
        if (n%2 != 0){ res[n/2][n/2]=val; }
        return res;
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
king122:专业技能不要写这么多,熟悉和熟练你经不住问,排版有些难看,中间的空隙搞小一点,项目描述的话感觉是从课程中抄下来的,改一改吧,不然烂大街了,每个项目都写一两点,用什么技术实现了什么难点,然后再写一些数字上去像时间又花了90%这样,这样面试会多一些,如果觉得自己的项目还是不够用的话,我有几个大厂最近做过的实习项目,感兴趣的话可以看我简介中的项目地址
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务