977.有序数组的平方

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

思路

  • 递增数组,平方后最大值一定在最左侧或者最右侧,可想到–双指针
  • 左右指针向中间靠拢,每次可以得到一个最大值,以此类推,放入结果集中
  • 临界条件需要左右指针相等,不会漏掉最后一个数

复杂度

  • 时间 O(n)
  • 空间 O(n)
class Solution {public int[] sortedSquares(int[] nums) {int[] rt = new int[nums.length];int l = 0 ,r = nums.length-1,pos = r ;while(l<=r){int lv = nums[l] * nums[l] ;int rv = nums[r] * nums[r];if(lv < rv){rt[pos--] = rv ;--r;}else{rt[pos--] = lv ;++l;}}return rt; }
}

209. 长度最小的子数组

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

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

思考

  • 最小数据需要逐个判断子数据的长度,可想到滑动窗口
  • 动态子数组的最小长度,可想到快慢指针,快指针得到满足条件的子数组时,移动慢指针
  • 慢指针的移动需要借助循环来实现,即需要两层循环

复杂度

  • 时间 O(2n)==>O(n)
  • 空间 O(1)
class Solution {public int minSubArrayLen(int target, int[] nums) {int l = 0 ,r = 0 ,sum = 0, min = Integer.MAX_VALUE;while(r < nums.length){sum += nums[r];while(sum >= target){min = Math.min(min,r-l+1);sum -= nums[l++];}++r;}return min==Integer.MAX_VALUE ? 0 : min;}
}

59.螺旋矩阵II

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

思考

  • 按顺时针旋转,旋转一周可得到四条边,分别为上、右、下、左
  • 每条边的临界值为0或者n-1,循环为左右闭区间,顾走完一条边就要把这条边消掉,(起名为剥洋葱)
  • 走完一周,相当消掉一周的边,是不是很像剥洋葱,一层一层的剥开…
class Solution {public int[][] generateMatrix(int n) {//四条边left rigth top bottom 根据旋转方向得到每条边的临界值,类似洋葱剥皮// 右->做int left  = 0 ;// 左->右int right = n - 1 ; // 上->下int bottom = n - 1 ; // 下->上int top = 0 ;int num = 1 ,total = n * n;int [][] res = new int[n][n];while(num <= total){//左->右  高度(top)不变for(int i = left ; i<=right ; i ++){res[top][i] = num++;}top++;  //上层边消掉//上->下  右侧(right)不变for(int i = top ; i<=bottom ; i++){res[i][right] = num++;}right--; //右侧边消掉//右->左 底部(bottom)不变for(int i = right ; i>=left ; i--){res[bottom][i] = num++;}bottom--; //下层边消掉//下->上 左侧(left)不变for(int i = bottom ; i>=top ;i--){res[i][left] = num++;}left++; //左侧边消掉}return res ;}
}

随想录一期 day2 [977.有序数组的平方|209. 长度最小的子数组|59.螺旋矩阵II(剥洋葱)]相关推荐

  1. 977. 有序数组的平方|209. 长度最小的子数组|59. 螺旋矩阵 II

    977. 有序数组的平方 原理 准备:双指针.一个空数组.双指针指向的两个元素作比较,更大的数平方之后,放入空数组的尾部空位. 图解 其实这题的指针有两种方法: 从两边向中间靠拢,得到的是由大到小的值 ...

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

    LeetCode 977.有序数组的平方 题目链接:977.有序数组的平方 思路: 1.先对每个数进行遍历平方,并插入新的容器中 2.对容器进行排序,返回就可以了 缺陷:开辟了新的容器空间 class ...

  3. 209. 长度最小的子数组(中等 数组 滑动窗口)

    209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target . 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, -, n ...

  4. 代码随想录第二天|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结

    (本文主要是用于个人笔记的书写,很多地方的使用可能并不专业,如需学习更加建议移步代码随想录官网代码随想录 (programmercarl.com))) 1.有序数组的平方: ----双指针法:因为平方 ...

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

    --------------------------- 977.有序数组的平方 #include <iostream> #include <algorithm> #includ ...

  6. 10. Leetcode 209. 长度最小的子数组 (数组-同向双指针-滑动窗口)

    给定一个含有 n 个正整数的数组和一个正整数 target .找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr ...

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

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

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

    目录: 977.有序数组的平方 209.长度最小的子数组 1.暴力输出法 2.滑动窗口法 59.螺旋矩阵II 总结: 今日收获: 977.有序数组的平方 因为是递增且有负数的数组,那么他们的平方如果还 ...

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

    day2 | LeetCode977.有序数组的平方.209.长度最小的子数组.59.螺旋矩阵II 创建时间: October 13, 2022 3:29 PM 一.今日任务 977.有序数组的平方 ...

最新文章

  1. 腾讯科技改版 新闻帝国必经之路
  2. 【PC工具】winrar解压缩装机必备软件,winRAR5.70免费无广告
  3. Flink从入门到精通100篇(二十二)-Apache Flink OLAP引擎性能优化及应用
  4. 预测流失准确率超 82%,这个功能让“防流失+促留存大于 2”
  5. Python-字符串格式化
  6. return编程python_python3 第二十一章 - 函数式编程之return函数和闭包
  7. metasploit 中文系统安装失败问题
  8. 【Contact】结构体+动态内存管理+文件存储实现简易通讯录代码
  9. SAP License:物料编码原则<多码还是一码>之一
  10. 银联支付,实现代码对接
  11. plc控制伺服电机 四轴攻丝机案例 该程序为plc控制伺服电机的工程案例程序,包含伺服电机接线图,包含程序流程的详细解释说明
  12. 坚果云根目录同步冲突解决方法
  13. 【EasyRL学习笔记】第五章 Proximal Policy Optimization 近端策略优化算法
  14. 3.2 人工智能关键技术
  15. python常用模块:re模块案例、subprocess
  16. 国产安卓和原生android,定制安卓和原生Android到底有哪些不同?真相了!
  17. From MAP, MLE, OLS, G-N to IEKF,EKF
  18. 前端开发:关于鉴权的使用总结
  19. CSS3—盒子模型 讲解
  20. 【论文阅读】Knowledge Enhanced GAN for IoT Traffic Generation

热门文章

  1. 微信订阅消息(后端)教程
  2. Java 开发规范文档
  3. 子平真诠释疑笔记(一)
  4. 第十四周练兵区——编程题——不计入总分
  5. quoted-printable解码程序
  6. 用户画像之基础知识(人群画像|会话环境维度|行为画像)
  7. keytool 错误:Keystore was tampered with, or password was incorrect
  8. Devexpress Xtrareport 创建主从报表
  9. python 把数字日期转换成中文日期
  10. python,如何整体取消tab缩进【反方向缩进】