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

【leetcode】第一章数组-2

977. 有序数组的平方

  • 简单的方法是平方后使用排序方法
  • 第2种方法是双指针方法,从两边进行判断,将最大的从后往前放
public static int[] sortedSquares(int[] nums) {// 输入:nums = [-4,-1,0,3,10]// 输出:[0,1,9,16,100]// 解释:平方后,数组变为 [16,1,0,9,100]// 排序后,数组变为 [0,1,9,16,100]// 从前往后来决定元素在哪个位置是不现实的// 因此从后往前判断,比较right 和 left的平方// 谁大就放在最后一个位置,然后移动那个比较大的元素的指针int left = 0;int right = nums.length - 1;// 存储结果数组,i为下标int i = nums.length-1;int[] sortNum = new int[nums.length];// 边界判断 可举例:一个元素的情况while (left <= right) {int leftValue = nums[left]*nums[left];int rightValue = nums[right]*nums[right];// 若右边元素大,则放置右边元素值,right指针左移if (leftValue < rightValue) {sortNum[i--] = rightValue;right--;}else {sortNum[i--] = leftValue;left++;}}return sortNum;
}

209.长度最小的子数组

  • 滑动窗口方法:当大于等于给定值时,便收缩窗口,不断更新最小长度
public int minSubArrayLen(int target, int[] nums) {int left = 0;int right = 0;int sum = 0;int minLen = nums.length + 1;while (right < nums.length) {sum += nums[right];// 当一旦大于给定值,便缩小窗口,看左边界收缩后是否最小长度会发生变化while (sum >= target) {minLen = Math.min(minLen, right - left+1);sum -= nums[left++];}right++;}// 若不存在最小窗口(数组和 < target)或数组长度为0,则minLen应该赋为0return minLen == nums.length + 1 ? 0 : minLen;}

59. 螺旋矩阵 II

  • 按照顺时针走路,注意边界的选取
  • 一开始的起点和终点需要选取好,在这,我选择前闭后闭方法
public int[][] generateMatrix(int n) {int[][] res = new int[n][n];int num = 1;int matrixNum = n * n;int left = 0;int right = n-1;int top = 0;int bottom = n-1;while (num <= matrixNum) {for (int i = left; i <= right; i++) {res[top][i] = num++;}top++;for (int i = top; i <= bottom; i++) {res[i][right] = num++;}right--;for (int i = right; i >= left; i--) {res[bottom][i] = num++;}bottom--;for (int i = bottom; i >= top; i--) {res[i][left] = num++;}left++;}return res;}
http://www.lryc.cn/news/122398.html

相关文章:

  • 程序使用Microsoft.XMLHTTP对象请求https时出错解决
  • Linux安装配置nginx+php搭建
  • springboot的各种配置
  • OSI七层模型及TCP/IP四层模型
  • MDN-Web APIs
  • 2023国赛数学建模C题思路分析
  • 暑假集训笔记
  • 【枚举+推式子】牛客小白月赛 63 E
  • Android多屏幕支持-Android12
  • python环境下载安装教程,python运行环境怎么下载
  • 【0.2】lubancat鲁班猫4远程ubuntu22.04.2 无需任何安装
  • Flutter 状态管理 Provider
  • 【设计模式】观察者模式
  • ORCA优化器浅析——CDXLOperator Base class for operators in a DXL tree
  • go入门实践四-go实现一个简单的tcp-socks5代理服务
  • div 中元素居中的N种常用方法
  • Java获取指定文件夹下目录下所有视频并复制到另一个地方
  • windows server 2016 搭建使用 svn 服务器教程
  • 【Python】如何判断时间序列数据是否为平稳时间序列或非平稳时间序列?
  • Labview控制APx(Audio Precision)进行测试测量(六)
  • 【Linux】网络协议总结
  • 如何轻松注册企业邮箱?快速掌握超简单的注册技巧!
  • 【行为型设计模式】C#设计模式之观察者模式
  • 《Java面向对象程序设计》学习笔记——第 8 章 设计模式
  • Java学习笔记28——字节流1
  • C++连接串口方式(MFC版本)(简单版本)
  • ospf重发布
  • 基于weka手工实现K-means
  • 分布式系统监控zabbix安装部署及使用
  • 【H5】使用 JavaScript 和 CSS 来完成实现鼠标接触时显示一个图片弹窗