算法训练营(day02)
算法训练营(day02)
数组理论基础
数组是存放在连续内存空间上的相同类型数据的集合。
数组可以方便的通过下标索引的方式获取到下标对应的数据。
- 数组下标都是从0开始的。
- 数组内存空间的地址是连续的
- 因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,只能覆盖原有地址的元素进行修改
977.有序数组的平方
题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/submissions/387798427/
给你一个按非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
解题思路
解题过程:
- 设定左右指针left,right
- 定义新数组 res[] 用于存放排序后的数组
- 比较
nums[left] * nums[left]
和nums[right] * nums[right]
的大小 - 从后往前,依次排列
详细代码
1 | class Solution { |
209.长度最小的子数组
题目链接:https://leetcode.cn/problems/minimum-size-subarray-sum/description/
给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr]
,并返回其长度。如果不存在符合条件的子数组,返回 0 。
解题思路
解题过程:
- 设定左右指针left,right
- 设定累加值
sum += nums[right]
,比较 sum 和 target 的大小- sum >= target 则
sum -= nums[left]
, left 指针右移 - sum < target 则继续累加
- sum >= target 则
- 遍历全局结束,定义res ,取最小值
- 如果不存在符合条件的子数组,res 返回 0
详细代码
暴力解法:
1 | class Solution { |
59.螺旋矩阵II
题目链接:https://leetcode.cn/problems/spiral-matrix-ii/description/
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix 。
解题思路
模拟矩阵的生成:初始位置设为矩阵的左上角,初始方向设为向右。若下一步的位置超出矩阵边界,或者是之前访问过的位置,则顺时针旋转,进入下一个方向。
详细代码
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小明学习博客!
评论
ValineDisqus