
数组
数组
@啊哈哈哈哈哈韩
目标是720篇笔记,冲就完了!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【刷题实录之链表】leecode206. 反转链表
这个专栏主要是我在刷题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。希望能给大家的学习带来一点帮助,共同进步!示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL。:新建一个链表,利用头插法将原数据插入,最终得到一个新链表。:题意:反转一个单链表。原创 2025-01-05 14:43:21 · 184 阅读 · 0 评论 -
【刷题实录之数组】双指针法之原地移除元素(C++)
这个专栏主要是我在刷题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。希望能给大家的学习带来一点帮助,共同进步!题目:给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素。原创 2024-08-28 22:12:34 · 190 阅读 · 0 评论 -
【刷题实录之数组】实现数组逆置(C语言)
这个专栏主要是我在刷题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。希望能给大家的学习带来一点帮助,共同进步!题目:用C语言实现数组逆置。原创 2024-08-28 21:16:23 · 201 阅读 · 0 评论 -
【刷题实录之数组】卡码网44. 开发商购买土地(前缀和)
在一个城市区域内,被划分成了n * m个连续的区块,每个区块都拥有不同的权值,代表着其土地价值。目前,有两家开发公司,A 公司和 B 公司,希望购买这个城市区域的土地。现在,需要将这个城市区域的所有区块分配给 A 公司和 B 公司。然而,由于城市规划的限制,只允许将区域按横向或纵向划分成两个子区域,而且每个子区域都必须包含一个或多个区块。:本题考查前缀和,根据题意,先获取二维数组输入,然后按行、按列求和,对行和、列和数组进行前缀求和,初始设置结果res为INT32_MAX,判断最小res,并输出。原创 2025-01-03 18:19:33 · 254 阅读 · 0 评论 -
【刷题实录之数组】卡码网58. 区间和(前缀和)
本题用到了一个小技巧,就是先将输入数组中所有元素的前缀和算出来,保存到一个数组中,则后序输入从left到right的和时只需要用right的前缀和减去left的前缀和再加上left对应的元素值即可。第一行输入为整数数组 Array 的长度 n,接下来 n 行,每行一个整数,表示数组的元素。随后的输入为需要计算总和的区间下标:a,b (b > = a),直至文件结束。输出每个指定区间内元素的总和。这个专栏主要是我在刷题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。原创 2025-01-03 17:30:40 · 190 阅读 · 0 评论 -
【刷题实录之数组】leecode59. 螺旋矩阵 II
本题其实没有用到任何方法,仅仅是进行一个模拟,要注意循环多少圈,每次走多少步,每次放置元素的内容,建议自己画一下n为奇数和偶数时的图,很简单就能推导出来放置的规律。这个专栏主要是我在刷题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。希望能给大家的学习带来一点帮助,共同进步!:给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]原创 2025-01-03 00:17:39 · 169 阅读 · 0 评论 -
【刷题实录之数组】leecode76. 最小覆盖子串(滑动窗口法)
这个专栏主要是我在刷题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “”。注意:对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。解释:最小覆盖子串 “BANC” 包含来自字符串 t 的 ‘A’、‘B’ 和 ‘C’。输入:s = “ADOBECODEBANC”, t = “ABC”输入: s = “a”, t = “aa”输入:s = “a”, t = “a”原创 2025-01-02 23:09:22 · 351 阅读 · 0 评论 -
【刷题实录之数组】leecode904. 水果成篮(滑动窗口法)
然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果:你只有 两个 篮子,并且每个篮子只能装 单一类型 的水果。你可以选择任意一棵树开始采摘,你必须从 每棵 树(包括开始采摘的树)上 恰好摘一个水果。输入:fruits = [3,3,3,1,2,1,1,2,3,3,4]解释:可以采摘 [1,2,1,1,2] 这五棵树。输入:fruits = [1,2,3,2,2]解释:可以采摘 [2,3,2,2] 这四棵树。输入:fruits = [0,1,2,2]解释:可以采摘 [1,2,2] 这三棵树。原创 2025-01-02 00:02:54 · 479 阅读 · 0 评论 -
【刷题实录之数组】leecode209. 长度最小的子数组(滑动窗口法)
本题采用滑动窗口法,所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。可以发现滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。这个专栏主要是我在刷题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。输入:target = 11, nums = [1,1,1,1,1,1,1,1]输入:target = 7, nums = [2,3,1,2,4,3]输入:target = 4, nums = [1,4,4]原创 2025-01-01 16:39:09 · 238 阅读 · 0 评论 -
【刷题实录之数组】leecode977. 有序数组的平方(双指针法)
本题采用双指针法,前指针指向第一个元素,后指针指向末尾元素,开辟一个新的数组,其大小等于原数组,遍历原数组与新数组,将绝对值较大元素的平方赋予新数组的末尾元素,直至填满新数组,最后返回新数组即可。希望能给大家的学习带来一点帮助,共同进步!解释:平方后,数组变为 [16,1,0,9,100]输入:nums = [-4,-1,0,3,10]输入:nums = [-7,-3,2,3,11]排序后,数组变为 [0,1,9,16,100]输出:[0,1,9,16,100]输出:[4,9,9,49,121]原创 2025-01-01 15:56:29 · 183 阅读 · 0 评论 -
【刷题实录之数组】leecode844. 比较含退格的字符串(双指针法)
本题仍使用双指针法,first为快指针,遍历变量i实际充当慢指针,初始时first为0,遍历数组,慢指针遇到退格符则快指针退位,deleteString返回最终字符串长度,分别对两个字符串进行删除操作,再进行比较,如果一致则返回true。:给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true。输入:s = “ab#c”, t = “ad#c”解释:s 会变成 “c”,但 t 仍然是 “b”。输入:s = “a#c”, t = “b”原创 2025-01-01 14:53:08 · 296 阅读 · 0 评论 -
【刷题实录之数组】leecode283. 移动零(双指针法)
首先要定义快慢指针,其中快指针负责寻找新数组的元素 ,新数组就是不含有目标元素的数组,而慢指针则指向更新新数组下标的位置,在本题中,采用for (i : n)的方式进行遍历数组元素,其功能与慢指针相同,故仅需要定义一个快指针即可,最终将后面剩下的元素全赋值为0。:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]原创 2025-01-01 14:12:25 · 234 阅读 · 0 评论 -
【刷题实录之数组】leecode26. 删除有序数组中的重复项(双指针法)
给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。nums 的其余元素与 nums 的大小不重要。:本题采用双指针法,first为快指针,遍历变量i实际充当慢指针,初始时first为0,遍历数组,寻找与后一个元素不同的元素,或者最后一个元素(注意这里的逻辑实际上是将重复元素中的最后一个加入新数组),赋值给快指针指向的空间,由于first在最后一次仍然要加一,所以最后得到的first实际上是新数组大小,故返回first即可。原创 2025-01-01 12:47:07 · 162 阅读 · 0 评论 -
【刷题实录之数组】leecode27. 移除元素(双指针法)
首先要定义快慢指针,其中快指针负责寻找新数组的元素 ,新数组就是不含有目标元素的数组,而慢指针则指向更新新数组下标的位置,在本题中,采用for (i : n)的方式进行遍历数组元素,其功能与慢指针相同,故仅需要定义一个快指针即可。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。你不需要考虑数组中超出新长度后面的元素。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。原创 2025-01-01 12:14:40 · 350 阅读 · 0 评论 -
【刷题实录之数组】leecode69. x 的平方根(二分查找法)
给你一个非负整数 x ,计算并返回 x 的算术平方根。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5。:本题看似是求平方根,其实是二分查找的一个应用题,在二分模板的基础上,要注意防止int类型数据溢出,所以right最大为46340,在x的平方根有小数部分时,要保留其整数部分,即返回right值即可,这个专栏主要是我在刷题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。希望能给大家的学习带来一点帮助,共同进步!原创 2025-01-01 01:37:44 · 405 阅读 · 0 评论 -
【刷题实录之数组】leecode34. 在排序数组中查找元素的第一个和最后一个位置(二分查找法)
本题首先需要通过二分法确定数组中是否存在target,如果不存在直接返回{-1,-1},如果存在则需要确定target的起始和结束位置,这里比较难判断的是起始和结束位置,详见下面代码注释。如果数组中不存在目标值 target,返回 [-1, -1]。这个专栏主要是我在刷题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。输入:nums = [5,7,7,8,8,10], target = 8。输入:nums = [5,7,7,8,8,10], target = 6。原创 2025-01-01 01:15:13 · 163 阅读 · 0 评论 -
【刷题实录之数组】leecode35.搜索插入位置(二分查找法)
这道题目要运用二分查找,如果数组中存在target,直接套用二分法模板,如果不存在,则需要寻找插入位置,这里我们要想到,其实最后直接返回left就可以了,因为根据if的判断条件,left左边的值一直保持小于target,right右边的值一直保持大于等于target,而且left最终一定等于right+1,这么一来,循环结束后,在left和right之间画一条竖线,恰好可以把数组分为两部分:left左边的部分和right右边的部分,而且left左边的部分全部小于target,并以right结尾;原创 2025-01-01 01:06:51 · 299 阅读 · 0 评论 -
【刷题实录之数组】leecode704. 二分查找(二分查找法)
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。这个专栏主要是我在刷题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。输入: nums = [1,3,5,6], target = 5。输入: nums = [1,3,5,6], target = 2。输入: nums = [1,3,5,6], target = 7。原创 2024-12-31 21:02:07 · 268 阅读 · 0 评论