
数组
文章平均质量分 61
数组
可惜我是水瓶座__
这个作者很懒,什么都没留下…
展开
-
【LeetCode】用最少数量的箭引爆气球
墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。输入:points = [[10,16],[2,8],[1,6],[7,12]]输入:points = [[1,2],[3,4],[5,6],[7,8]]输入:points = [[1,2],[2,3],[3,4],[4,5]]-在x = 11处发射箭,击破气球[10,16]和[7,12]。-在x = 6处射出箭,击破气球[2,8]和[1,6]。原创 2024-07-14 14:41:31 · 312 阅读 · 0 评论 -
【LeetCode】插入区间
给你一个 无重叠的 ,按照区间起始端点排序的区间列表 intervals,其中 intervals[i] = [starti, endi] 表示第 i 个区间的开始和结束,并且 intervals 按照 starti 升序排列。输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]解释:这是因为新的区间 [4,8] 与 [3,5],[6,7],[8,10] 重叠。输出:[[1,2],[3,10],[12,16]]原创 2024-07-14 13:52:02 · 366 阅读 · 1 评论 -
【LeetCode】生命游戏
下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。输入:board = [[0,1,0],[0,0,1],[1,1,1],[0,0,0]]输出:[[0,0,0],[1,0,1],[0,1,1],[0,1,0]]如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡;如果死细胞周围正好有三个活细胞,则该位置死细胞复活;原创 2024-07-09 19:50:32 · 499 阅读 · 0 评论 -
【LeetCode】螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]但是要注意各种变量,什么时候加,什么时候减,最好拿笔画一下,不然容易搞乱。输出:[1,2,3,4,8,12,11,10,9,5,6,7]输出:[1,2,3,6,9,8,7,4,5]就模拟就好了,顺时针模拟。原创 2024-07-07 21:41:34 · 315 阅读 · 0 评论 -
【LeetCode】有效的数独
解释:除了第一行的第一个数字从 5 改为 8 以外,空格内其他数字均与 示例1 相同。请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。board[i][j] 是一位数字(1-9)或者 ‘.’只需要根据以上规则,验证已经填入的数字是否有效即可。一个有效的数独(部分已被填充)不一定是可解的。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。输入:board =原创 2024-07-07 21:18:43 · 610 阅读 · 0 评论 -
【LeetCode】两数之和 II - 输入有序数组
如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length。以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。因此 index1 = 1, index2 = 2。返回 [1, 2]。因此 index1 = 1, index2 = 2。输入:numbers = [2,7,11,15], target = 9。原创 2024-07-02 21:58:31 · 515 阅读 · 0 评论 -
【LeetCode】罗马数字转整数
数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。每次先往后看两个,看看是不是属于那6个特例中的,如果属于,就算上,然后跳一格,继续向后,否则就挨个算就好了。s 仅含字符 (‘I’, ‘V’, ‘X’, ‘L’, ‘C’, ‘D’, ‘M’)X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。原创 2024-06-29 15:32:35 · 367 阅读 · 0 评论 -
【LeetCode】分发糖果
利用left和right数组,来存储每一侧至少应该放多少个糖果,刚开始每个小孩先分一个,然后少的再补。假想一个最终的糖果数组,我们如何检查呢,可以先统一检查左侧,再统一检查右侧。解释:你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。解释:你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。根据题目要求,两个数相邻,若不想等,那么比较大的那个数分得的糖果更多。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。原创 2024-06-28 20:27:25 · 452 阅读 · 0 评论 -
【LeetCode】接雨水
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输入:height = [4,2,0,3,2,5]数组,分别记录每个点的左边的最高值,和右边的最高值。个水柱,把所有的水柱加在一起就好了。图看懂了,接下来就很简单了,可以把水分隔开,相当于。原创 2024-06-28 19:28:21 · 676 阅读 · 0 评论 -
【LeetCode】加油站
从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油。开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油。开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油。原创 2024-06-27 20:15:49 · 403 阅读 · 0 评论 -
【LeetCode】O(1) 时间插入、删除和获取随机元素
int getRandom() 随机返回现有集合中的一项(测试用例保证调用此方法时集合中至少存在一个元素)。bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true;bool remove(int val) 当元素 val 存在时,从集合中移除该项,并返回 true;// 由于 2 是集合中唯一的数字,getRandom 总是返回 2。集合现在包含 [2]。// 返回 false ,表示集合中不存在 2。// 2 已在集合中,所以返回 false。原创 2024-06-27 09:58:28 · 1238 阅读 · 0 评论 -
【LeetCode】多数元素
每每遍历到一个元素,看一下支不支持自己,支持的话,票数+1,不支持票数-1,投完票之后看看当前投票的对象的票数,如果票数为0了,那么说明暂时没人支持他了,自己就上。因为多数元素出现次数 大于 ⌊ n/2 ⌋,所以可以使用投票的方法,因为支持自己的元素个数多于一半了,所以可以保证自己一定胜出。给定一个大小为 n 的数组 nums ,返回其中的多数元素。先假定一个元素是多数元素,然后自己支持自己,次数为1,然后继续往后面遍历就行了。输入:nums = [2,2,1,1,1,2,2]原创 2024-06-25 21:52:00 · 377 阅读 · 0 评论 -
【LeetCode】H 指数
根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且 至少 有 h 篇论文被引用次数大于等于 h。由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3。解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 3, 0, 6, 1, 5 次。下图,每一个大框内,右边一列是大于它的数的个数,左边一列是当前被引用的数量。,先对它进行排序,得到。原创 2024-06-25 21:31:56 · 498 阅读 · 0 评论 -
【LeetCode】跳跃游戏
遍历所有位置,每每到一个位置,就判断当前位置是否真的可以到达,如果可以到达,然后看目前为止可以到达的最远距离。给你一个非负整数数组 nums ,你最初位于数组的 第一个下标。解释:无论怎样,总会到达下标为 3 的位置。解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。判断你是否能够到达最后一个下标,如果可以,返回 true;否则,返回 false。输入:nums = [2,3,1,1,4]输入:nums = [3,2,1,0,4]原创 2024-06-24 23:00:51 · 356 阅读 · 0 评论 -
【LeetCode】合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。输入:intervals = [[1,3],[2,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。输入:intervals = [[1,4],[4,5]]输出:[[1,6],[8,10],[15,18]]数组进行排序,然后直接遍历就好了。输出:[[1,5]]原创 2024-06-07 09:52:55 · 315 阅读 · 0 评论 -
【LeetCode】和为 K 的子数组
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数。因此我们可以把遇到的前缀和放到一个哈希表里,key存储前缀和本身,value存出现的次数。输入:nums = [1,1,1], k = 2。输入:nums = [1,2,3], k = 3。子数组是数组中元素的连续非空序列。注意,为了同一操作,前缀和为。,类似于dummy头节点。原创 2024-06-06 16:20:45 · 218 阅读 · 0 评论 -
【LeetCode】滑动窗口最大值
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。如何保证元素都是窗口内的?记录已经访问的元素下标,然后遍历其他元素,利用窗口大小k来判断。输入:nums = [1,3,-1,-3,5,3,6,7], k = 3。使用队列,队列中队头元素记录当前窗口的最大值对应的下标。保持队列中的都是当前窗口内的元素,而没有以前的元素。输入:nums = [1], k = 1。输出:[3,3,5,5,6,7]返回 滑动窗口中的最大值。原创 2024-06-06 15:22:04 · 154 阅读 · 0 评论 -
【LeetCode】划分字符区间
像 “ababcbacadefegde”, “hijhklij” 这样的划分是错误的,因为划分的片段数较少。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。划分结果为 “ababcbaca”、“defegde”、“hijhklij”。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s。记录每个字符出现的最后的位置,寻找每一个可以完全截断的位置,记录到答案中。输入:s = “ababcbacadefegdehijhklij”输出:[9,7,8]原创 2024-06-04 13:42:06 · 265 阅读 · 0 评论