代码随想录训练营day2
目录
题目一:有序数组的平方
题目二:长度最小的子数组
题目三:螺旋矩阵||
总结:
题目一:有序数组的平方
力扣题目链接
题目描述:给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
思路分析: 双指针解题 视频指路
class Solution {public int[] sortedSquares(int[] nums) {int i = 0;int j = nums.length - 1;int[] result = new int[nums.length];int k = result.length - 1;while (i <= j) {if (nums[j] * nums[j] > nums[i] * nums[i]) {result[k--] = nums[j] * nums[j];j--;} else {result[k--] = nums[i] * nums[i];i++;}}return result;}
}
题目二:长度最小的子数组
力扣题目链接
题目描述:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
思路分析: 双指针的滑动窗口,解法来自林小鹿
class Solution {public int minSubArrayLen(int target, int[] nums) {int sum = 0;int result = Integer.MAX_VALUE;for (int i = 0, j = 0; i < nums.length; i++) {sum += nums[i]; // 向右拓展窗口while (sum - nums[j] >= target) sum -= nums[j++]; // 向左收缩窗口if (sum >= target) result = Math.min(result, i - j + 1); // 区间更新}return result == Integer.MAX_VALUE ? 0 :result;}
}
题目三:螺旋矩阵||
力扣题目链接
题目描述:给你一个正整数
n
,生成一个包含1
到n2
所有元素,且元素按顺时针顺序螺旋排列的n x n
正方形矩阵matrix
。
思路分析: 模拟转圈,循环不变量 视频指路
class Solution {public int[][] generateMatrix(int n) {int loop = 0; // 控制循环次数int[][] res = new int[n][n];int start = 0; // 每次循环的开始点(start, start)int count = 1;int i, j;while(loop++ < n / 2) { // 判断边界后,loop从1开始for (j = start; j < n - loop; j++) {res[start][j] = count++;}for (i = start; i < n -loop; i++) {res[i][j] = count++;}for (; j >= loop; j--) {res[i][j] = count++;}for (; i >= loop; i--) {res[i][j] = count++;}start++;}// 如果n为奇数的话,需要单独给矩阵最中间的位置赋值if (n % 2 == 1) {res[start][start] = count;}return res;}
}
总结:
题一的没啥说的,就是对于双指针的运用巩固。
题二的滑动窗口感觉很有意思。
题三的螺旋矩阵属实把我绕晕了,不过看完Carl哥的视频,感觉思路很清晰,神奇的解法!
代码随想录训练营day2相关推荐
- 【代码随想录训练营】Day43-动态规划
代码随想录训练营 Day43 今日任务 1049.最后一块石头的重量Ⅱ 494.目标和 474.一和零 语言:Java 1049. 最后一块石头的重量Ⅱ 链接:https://leetcode.cn/ ...
- 代码随想录训练营day8
目录 题目一:反转字符串 解法一:数值交换 解法二:位运算 题目二:反转字符串|| 题目三:替换空格 解法一:双指针 解法二:使用额外空间 题目四:翻转字符串里的单词 解法一: 解法二:纯属娱乐 题目 ...
- 【代码随想录训练营】【Day14】第六章|二叉树|理论基础|递归遍历|迭代遍历|统一迭代
理论基础 二叉树的定义形式有:节点指针和数组 在数组中,父节点的下标为i,那么其左孩子的下标即i*2+1,右孩子的下标即为i*2+2 二叉树的常见遍历形式有:前序遍历.后序遍历.中序遍历和层序遍历 前 ...
- 代码随想录训练营day56
题目一:两个字符串的删除操作 力扣题目链接 题目描述: 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数. 每步 可以删除任意一个字符串中的一个字 ...
- 代码随想录训练营day57
题目一:回文子串 力扣题目链接 题目描述: 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目. 回文字符串 是正着读和倒过来读一样的字符串. 子字符串 是字符串中的由连续字符组成的一 ...
- 代码随想录训练营day53
题目一:最长公共子序列 力扣题目链接 题目描述: 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度.如果不存在 公共子序列 ,返回 0 . 一个字符串的 子序列 ...
- 代码随想录训练营day55
题目一:判断子序列 力扣题目链接 题目描述: 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符 ...
- 代码随想录训练营day52
题目一:最长上升子序列 力扣题目链接 题目描述: 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度. 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序. ...
- 代码随想录训练营day48
题目一:打家劫舍 力扣题目链接 题目描述: 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上 ...
最新文章
- 最全19000+国外AE模板合集包
- delphi char与string比较
- c# 连接mysql数据库_C#连接Mysql数据库
- java文件与流_Java文件和流深入
- Delphi读取文本内容
- 叶片制成切片的结构示意图_吉林大学《JPCL》:简单方法!制备高性能全叶片涂层量子点LED...
- IncompatibleClassChangFound interface org.apache.hadoop.mapreduce.JobContext, but class was expected
- python是一种面相什么语言_Python面相对象编程的知识总结
- jq请求Ajax数据
- 网络协议:TCP保活机制和Nagle算法
- python web环境傻瓜搭建_Python 环境搭建以及神器推荐,果断收藏!
- gcc下strstream使用时报错
- kali 32位 更换 xfce4 桌面
- java-日记本(一)
- DevExpress 主从表折叠显示
- MFC按方向键旋转立方体线框
- 华为防火墙忘记密码,使用console口更改密码
- [除一波线段树和平衡树的草]
- 100行代码做一个周杰伦歌词生成器--python
- 博弈论--耶鲁大学公开课