首页 > 编程语言 >代码随想录算法训练营第二天| 977.有序数组的平方、 209.长度最小的子数组、 59.螺旋矩阵II

代码随想录算法训练营第二天| 977.有序数组的平方、 209.长度最小的子数组、 59.螺旋矩阵II

时间:2024-03-07 12:11:53浏览次数:23  
标签:977 right nums int 随想录 -- result 数组 left

977.有序数组的平方
https://leetcode.cn/problems/squares-of-a-sorted-array/description/

public static int[] sortedSquares(int[] nums){
        int left = 0;
        int right = nums.length - 1;
        int[] result = new int[nums.length];
        int write = result.length - 1;
        while (left <= right){
            if (Math.pow(nums[left],2) > Math.pow(nums[right],2)) {
                result[write] = nums[left] * nums[left];
                left++;
                write--;
            }else {
                result[write] = nums[right] * nums[right];
                right--;
                write--;
            }
        }
        return result;
    }

总结:双指针每次在最大的两个之中去读,把大的添加到新数组中

** 209.长度最小的子数组**
https://leetcode.cn/problems/minimum-size-subarray-sum/description/

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

总结:滑动窗口的思想,right仅需一次遍历数组即可,right一直向前,无需回头
59.螺旋矩阵II
https://leetcode.cn/problems/spiral-matrix-ii/submissions/508708830/

public static int[][] generateMatrix(int n) {
        int l = 0,t = 0,r = n - 1,b = n - 1;
        int num = 1 , tar = n * n;
        int[][] result = new int[n][n];
        while (num <= tar){
            for (int i = l; i <= r; i++) {
                result[t][i] = num++;
            }
            t++;
            for (int i = t; i <= b; i++){
                result[i][r] = num++;
            }
            r--;
            for (int i = r; i >= l; i--){
                result[b][i] = num++;
            }
            b--;
            for (int i = b; i >= t; i--){
                result[i][l] = num++;
            }
            l++;
        }
        return result;
    }

总结:这种矩阵的题 关键就在于 上下左右四个边界定义好,定义好之后边界就包含了遍历的下标的信息,之后边界一直在变,就往里填数字就好,关键就在于边界!!!

标签:977,right,nums,int,随想录,--,result,数组,left
From: https://www.cnblogs.com/jeasonGo/p/18058596

相关文章

  • labuladong_一/二维数组前缀和
    一维数组前缀和核心思路是我们new一个新的数组 preSum 出来,preSum[i] 记录 nums[0..i-1] 的累加和。看这个 preSum 数组,如果我想求索引区间 [1,4] 内的所有元素之和,就可以通过 preSum[5]-preSum[1] 得出。一维数组前缀和 ......
  • 数组
    数组中的数据叫元素      注意:计算机中是从0开始计数但日常中人们习惯从1开始计数,当数据需要普通人看的时候应当遵从日程的习惯从1开始计数 数组的遍历求和  看需要定义的数组能不能直接写出来,能就静态不能就动态   根据图来回忆流......
  • 33. 搜索旋转排序数组(中)
    目录题目二分搜索题目整数数组nums按升序排列,数组中的值互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[nums[k],nums[k+1],...,nums[n-1],nums[0],nums[1],...,nums[k-1]](下标从0开始计数)。例如,[0,1......
  • js 时间数组如何url传参 和接收参数
    在JavaScript中,如果你想通过URL传递一个时间数组,你需要先将数组转换成字符串格式,因为URL参数只能传输字符串。有多种方式可以实现这个转换,例如使用JSON.stringify()将数组转换成JSON字符串。下面是一个示例,展示了如何将时间数组转换成URL参数,并在另一个页面接收这些参数:发送时间......
  • C++中的不规则二维数组
    技术背景最近刚学习C++的一些编程技巧,对于一些相对比较陌生的问题,只能采取一些简单粗暴的方案来实现。就比如说,我们可以在Python中定义一个[[0,0,0],[1,2],[1,1,1],[3]]这样的不规则的二维数组(list)。那么如果我们想在C++中实现一个类似的数据结构,应该怎么去设计呢?更具体一点的......
  • 代码随想录算法训练营day14 | leetcode 144. 二叉树的前序遍历、145. 二叉树的后序遍
    目录题目链接:144.二叉树的前序遍历-简单题目链接:145.二叉树的后序遍历-简单题目链接:94.二叉树的中序遍历-简单递归三要素:确定递归函数的参数和返回值:确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数,并且还要明确每次递归的返回值是什么进而确定递归......
  • 代码随想录算法训练营第三十八天| ● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯
    理论基础 代码随想录(programmercarl.com)动态规划的五部曲:确定dp数组(dptable)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组斐波那契数 题目链接:509.斐波那契数-力扣(LeetCode)思路:还好。classSolution{public:intfib(intn)......
  • 代码随想录算法训练营第三十八天 | 746. 使用最小花费爬楼梯,、70. 爬楼梯,509. 斐波那
     509.斐波那契数 已解答简单 相关标签相关企业 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2),其中n>......
  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
    704.二分查找https://leetcode.cn/problems/binary-search/description/一、左闭右闭`//左闭右闭publicstaticinterFen1(int[]nums,inttarget){if(target<nums[0]||target>nums[nums.length-1]){return-1;}intmaxIndex=nums.length-......
  • 代码随想录算法训练营第三十七天 | 738. 单调递增的数字,968.监控二叉树
    968.监控二叉树 已解答困难 相关标签相关企业 给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。 示例1:输入:[0,0,null,0,0]输出:1......