数组
SNAKEpc12138
这个作者很懒,什么都没留下…
展开
-
数组第五天:螺旋矩阵II
leetcode题目编号59.螺旋矩阵II 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 思路 主要是模拟顺时针画矩阵的问题: 填充上行从左到右 填充右列从上到下 填充下行从右到左 填充左列从下到上 由外向内一圈一圈这么画下去。 可以发现这里的边界条件非常多,在一个循环中,如此多的边界条件,如果不按照固定规则来遍历,肯定是非常混乱的。 因此之前转载 2021-03-26 14:54:22 · 69 阅读 · 0 评论 -
数组第四天:滑动窗口
leetcode编号209:长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。 示例: 输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。 思路 主要思路就是遍历数组,找到满足条件的子序列,然后比较得到最小的子序列长度返回。 关键在于如何降低遍历数组时的时间复杂度。 解法 暴力解法 两层for 循环,不转载 2021-03-25 10:32:03 · 103 阅读 · 0 评论 -
数组第三天:移除数组元素
leetcode编号27:移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并「原地」修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度后面的元素。 示例 2: 给定 nums =转载 2021-03-24 11:34:58 · 130 阅读 · 0 评论 -
数组第二天:二分法
leetcode编号35:搜索插入位置 题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例 2: 输入: [1,3,5,6], 2 输出: 1 示例 3: 输入: [1,3,5,6], 7 输出: 4 示例 4: 输入: [1,3,5,6], 0 输出: 0 思路 考虑插入位置的四种情况: ① 目标值在所有元素之前。 ② 目标值等于数组转载 2021-03-23 16:58:51 · 78 阅读 · 0 评论 -
数组第一天:认识数组
数组 定义 数组是存放在连续内存空间上的相同类型数据的集合。数组可以方便的通过下标索引的方式得到该下标下对应的数据。 需要注意的两点: 数组下标都是从0开始的。 数组内存空间的地址是连续的。 正是因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。 例如删除下标为3的元素,需要对下标为3的元素后面的所有元素都要做移动操作,如图所示: 数组元素是不能删除的,只能覆盖。 ...转载 2021-03-23 16:22:49 · 108 阅读 · 0 评论