数组
文章平均质量分 50
empty__barrel
这个作者很懒,什么都没留下…
展开
-
力扣:剑指Offer 29.顺时针打印矩阵
力扣:剑指Offer 29.顺时针打印矩阵题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。思路:代码: 在这里插入代码片原创 2022-02-25 15:37:05 · 149 阅读 · 0 评论 -
力扣:最小覆盖子串
力扣:最小覆盖串给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。思路:索引对应的值存在于 T 中则加到容器里面去,若不存在则判断下一个值,同时还会判断容器中是否已经完全包含 T 中所有元素。若包含,则记录 len 和 成功的字符串的起始位置,然后在此循环内不断移动 i 指针(同时要在容器中除去此元素)寻找成功的起始位置,如果成功则再赋值,直到不成功跳出循环,寻找下一个成功的末尾位置。代码:cla原创 2022-02-10 19:00:42 · 153 阅读 · 0 评论 -
力扣:删除有序数组的重复项
力扣:删除有序数组的重复项题目:给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的原创 2022-02-25 14:37:10 · 92 阅读 · 0 评论 -
力扣:844.比较含退格的字符串
力扣:844.比较含退格的字符串题目:本编辑器后,请你判断二者是否相等。# 代表退格字符。如果相等,返回 true ;否则,返回 false 。注意:如果对空文本输入退格字符,文本继续为空。官方给了两种①:用栈②:双指针栈代码如下:class Solution {public: bool backspaceCompare(string s, string t) { return build(s) == build(t); } string buil原创 2022-02-10 16:35:59 · 496 阅读 · 0 评论 -
力扣:283.移动零
力扣:283.移动零题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。空间想象:上面一个数组,下面一个数组。上面一个数组由 fastIndex 指向,下面一个数组由 slowIndex 指向。将上面一个数组搬到下面一个数组即可。按题意:假如上面一个数组指针指向的值为0则指向下一个数,不为0则交换 slowIndex 指向的数和 fastIndex 指向的数。通过swap就实现了后面的数为0原创 2022-02-10 13:50:01 · 310 阅读 · 0 评论 -
力扣:x的平方根、有效的完全平方数
力扣:x的平方根题目:给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。class Solution {public: int mySqrt(int x) { int l = 0, r = x, ans = -1; while (l <= r) { int m原创 2022-02-10 12:48:34 · 80 阅读 · 0 评论 -
力扣:34.在排序数组中查找元素的第一个和最后一个位置
力扣:34.在排序数组中查找元素的第一个和最后一个位置代码随想录解析题目:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums = [],原创 2022-02-10 11:50:00 · 133 阅读 · 0 评论 -
数组题目方法总结
一:二分查找法(查找某值):有序数组,无重复元素。以下为两种方法:①:左闭右闭②:左闭右开二:双指针法:涉及数组中元素的迁移①:除去val的值②:将每个值的平方顺序排列于另一数组中三:滑动窗口法:关于连续子串的操作(是判读一个子串整体是否满足某条件的操作)两个题目:一个是筛选出数组中某一子串不同元素个数小于等于某一值的最大子串长度。一个是筛选出元素和大于等于某一值的最小子串长度。说白了就是关于连续子串的操作(是判读一个子串整体是否满足某条件的操作)此时就可以使用滑动窗口法。优势解析:原创 2022-02-09 23:44:43 · 813 阅读 · 0 评论 -
力扣:54.螺旋矩阵
力扣:螺旋矩阵题目:给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { if (matrix.size() == 0 || matrix[0].size() == 0) { return {};原创 2022-02-09 18:13:33 · 403 阅读 · 0 评论 -
力扣:螺旋矩阵||
力扣:螺旋矩阵||题目:给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。row(行)column(列)通过while循环实现一圈一圈的进行,其中只需要看一圈就行了,设置四个标志位置,top,bottom,right,left 来实现一圈的操作。再进行下一圈的准备工作。跳出循环的条件:结束有两种情况:最后一圈有一个数,最后一圈有四个数。如果最后一圈有四个数,那么这一圈肯定会跑完。此时:left >righ原创 2022-02-09 16:36:50 · 253 阅读 · 0 评论 -
力扣:水果成篮
力扣:水果成篮与上一章(力扣:长度最小的子数组)运用方法类似。滑动窗口法:题目:你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 。你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果:你只有 两个 篮子,并且每个篮子只能装 单一类型 的水果。每个篮子能够装的水果总量没有限制。你可以选择任意一棵树开始采摘,你必须从 每棵 树(包括开始采摘的树)上 恰好摘一个水果 。原创 2022-02-08 20:30:51 · 442 阅读 · 0 评论 -
力扣:长度最小的子数组
力扣:长度最小的子数组代码随想录解析地址题目:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。暴力解法代码:class Solution {public: int minSubArrayLen(int s, vector<int>& nums) {原创 2022-02-08 17:28:31 · 243 阅读 · 0 评论 -
力扣:有序数组的平方、
力扣:有序数组的平方代码随想录地址题目:给你一个按 非递减顺序 排序(即递增)的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。注意负数此时可以通过比较开头平方以及末尾平方从而知道最大值。因此可以从大到小逆向排序。此时开辟一个放置元素的最终数组result,三个指针 i , j , k。i 指向当前数组首,j 指向当前数组尾,k 指向 result 数组尾来方置元素。循环结束条件:两值比较塞一值留一值,最后有一个值剩余此时i = j 此值也要塞入,所以条原创 2022-02-07 18:58:30 · 352 阅读 · 0 评论 -
力扣:移除元素
力扣:移除元素代码随想录解析题目:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。双指针法:快指针指向要插入的元素的位置慢指针指向要插入的位置要点:for (int fastIndex = 0; fastIndex < nums.size(); fastIndex++) {原创 2022-02-07 17:31:40 · 637 阅读 · 0 评论 -
力扣:二分查找
对应的力扣题目给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。我在此通过对区间的选择描述了两种方法。直接上代码一:class Solution {public: int search(vector<int>& nums, int target) { int left = 0; int right = nums.si原创 2022-01-31 18:55:26 · 165 阅读 · 0 评论