当前位置: 首页 > news >正文

Day02:LeedCode977. 有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II

 

详解:Day2:LeedCode977. 有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II-CSDN博客

977. 有序数组的平方

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

示例 1:

输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]

示例 2:

输入:nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums 已按 非递减顺序 排序

代码:

class Solution {public int[] sortedSquares(int[] nums) {int left=0;int right=nums.length-1;int[] result=new int[nums.length];int i=nums.length-1;while(left<=right){if(nums[left]*nums[left]<nums[right]*nums[right]){result[i]=nums[right]*nums[right];right--;}else{result[i]=nums[left]*nums[left];left++;}i--;}
return result;}
}

209. 长度最小的子数组

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

找出该数组中满足其总和大于等于 target 的长度最小的 连续

子数组

 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度如果不存在符合条件的子数组,返回 0 。

示例 1:

输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。

示例 2:

输入:target = 4, nums = [1,4,4]
输出:1

示例 3:

输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0

思路:滑动窗口,

易错点:当sum小于target需要扩大窗口,这里需要考虑边界条件

当sum>=target需要缩小窗口,仅需要缩小边框左部,不需要缩小左边,放大右部,因为sum>target时可能只缩小左边框,使得sum==target

代码:

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

 


59. 螺旋矩阵 II

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

示例 1:

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

输入:n = 1
输出:[[1]]

提示:

  • 1 <= n <= 20

思路:填充时坚持左闭右开,即for循环判断不加等号,每填完一圈要重新确定起始出发点和新的边长,遇见n为奇数的要单独填中心方格

class Solution {public int[][] generateMatrix(int n) {int cycle=n/2;//控制有几个圈int flag=n%2;//判断是否剩中间那个int nums=1;//控制边长int start=0;//每圈开始的地方int i=0,j=0;//控制位置int[][] result=new int[n][n];int k=1;while(cycle>0){i=start;j=start;//从左往右for(;j<n-nums;j++){result[i][j]=k++;}//从上到下for(;i<n-nums;i++){result[i][j]=k++;}//从右到左
for(;j>start;j--){result[i][j]=k++;
}//从下到上
for(;i>start;i--){result[i][j]=k++;
}cycle--;nums++;start++;}if(flag==1){result[n/2][n/2]=n*n;}return result;}
}

相关文章:

  • 《Qt》使用Windeployqt发布程序
  • 【yolo 项目】
  • el-radio-group 选择一个,全部选中 解决方案
  • [蓝桥杯 2020 省 A1] 超级胶水
  • 顶顶通呼叫中心中间件-自动外呼输入分机号(比如隐私号)(mod_cti基于FreeSWITCH)
  • 信息泄露--注意点点
  • AI大模型应用开发实践:3.使用 tiktoken 计算 token 数量
  • SQL 面试系列(一)【留存率问题】
  • 【论文笔记】Attention is All You Need(NIPS’17)
  • 递增链表去重
  • 【WEEK13】 【DAY3】Shiro第三部分【中文版】
  • SSL证书制作及nginx部署
  • 局域网传文件怎么操作?轻松实现文件共享!
  • 用Python的PyAutoGUI库控制鼠标滚轮
  • 深度学习之基于TensorFlow人脸表情识别
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Java Agent 学习笔记
  • Kibana配置logstash,报表一体化
  • node入门
  • PAT A1050
  • php中curl和soap方式请求服务超时问题
  • Redis的resp协议
  • Vue ES6 Jade Scss Webpack Gulp
  • Yii源码解读-服务定位器(Service Locator)
  • 深度解析利用ES6进行Promise封装总结
  • 世界上最简单的无等待算法(getAndIncrement)
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ###STL(标准模板库)
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (12)Hive调优——count distinct去重优化
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (6)STL算法之转换
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (七)Knockout 创建自定义绑定
  • (三分钟)速览传统边缘检测算子
  • (实战篇)如何缓存数据
  • (数据结构)顺序表的定义
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)Linq学习笔记
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .net8.0与halcon编程环境构建
  • .NET开发不可不知、不可不用的辅助类(一)
  • .net开发引用程序集提示没有强名称的解决办法
  • .NET使用存储过程实现对数据库的增删改查
  • .Net下的签名与混淆
  • .NET学习全景图