![](https://img-blog.csdnimg.cn/20200722161753396.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数组
文章平均质量分 80
数组刷题
yc_cy1999
一只喜欢cc和想去南大的小羊
展开
-
剑指 Offer 04. 二维数组中的查找【数组 / BST】
文章目录题目描述知识点解法一——二分结果码前思考代码实现解法二——思维⭐⭐⭐⭐⭐(重要!!!)结果码前思考代码实现码后反思参考文档 题目描述 矩阵的每行从左到右是升序,每列从上到下也是升序,在矩阵中查找某个数。 知识点 二分、分支、思维 解法一——二分 结果 码前思考 看到有序,第一反应就是二分查找。最直接的做法,一行一行的进行二分查找即可。 此外,结合有序的性质,一些情况可以提前结束: 比如某一行的第一个元素大于了 target ,当前行和后边的所有行都不用考虑了,直接返回 false。 .原创 2021-01-04 19:53:09 · 138 阅读 · 0 评论 -
LeetCode 31. 下一个排列【数组+思维】⭐⭐⭐⭐⭐
文章目录题目描述知识点结果实现码前思考代码实现码后反思参考文档 题目描述 知识点 数组,思维题 结果 实现 码前思考 其实这道题目跟全排列的思想是差不多的,只不过更加难思考清楚一些,从非全排列的角度出发,可能会更好理解一些!所以我是从非全排列的角度出发思考的; 我们希望下一个数比当前数大,这样才满足“下一个排列”的定义。因此只需要将后面的「大数」与前面的「小数」交换,就能得到一个更大的数...原创 2020-04-24 21:18:00 · 135 阅读 · 0 评论 -
【时间复杂度优化】LeetCode 581. Shortest Unsorted Continuous Subarray
文章目录题目描述知识点结果实现码前思考代码实现码后反思优化 题目描述 知识点 数组 结果 实现 码前思考 对于这个题目,可以先将原数组pre排序得到后数组after,然后得到两个数组不相同区域的左边界和右边界即可~(话说,这个排序会不会有点过于暴力。。。) 代码实现 //直接数组排序开干?为啥准确率这么低 class Solution { public: int findUnsortedSubarray(vector<int>& nums) { vecto.原创 2020-07-28 18:15:21 · 94 阅读 · 0 评论 -
【排序+寻找消失元素】LeetCode 448. Find All Numbers Disappeared in an Array
文章目录题目描述知识点结果实现码前思考代码实现码后反思 题目描述 知识点 数组 结果 实现 码前思考 我的思路是排序。设置一个指针,从左到右遍历,让每个元素归位; 遍历完之后,如果出现不匹配的位置,那么代表缺失。 代码实现 class Solution { public: vector<int> findDisappearedNumbers(vector<int>& nums) { int pos=0;//当前要移动的位置 .原创 2020-07-28 16:15:34 · 70 阅读 · 0 评论 -
【数组+双指针】LeetCode 283. Move Zeroes
文章目录题目描述知识点结果实现码前思考代码实现码后反思 题目描述 知识点 数组,双指针 结果 实现 码前思考 典型的双指针题目,一个指针用于遍历数组,一个指针用于记录非0数字的末尾; 代码实现 //遍历一遍就好了,后面直接补0,bye da~ class Solution { public: //记录非0的末尾 int pos=0; void moveZeroes(vector<int>& nums) { for(int i=0;i&l.原创 2020-07-27 14:23:05 · 63 阅读 · 0 评论 -
LeetCode 238. Product of Array Except Self【数组】⭐
文章目录题目描述知识点结果实现码前思考代码实现码后反思 题目描述 知识点 数组 结果 实现 码前思考 题中有要求在不使用除法的前提下,保持时间复杂度为O(n)O(n)O(n); 一下子就要想到传统艺能:维护两个数组,分别保存自左往右累乘和自右往左累乘的结果。最后返回的结果就是两个数组对应元素的乘积; 关于附加条件——不要使用额外的空间。可以看代码里是怎么写的~ 代码实现 //【从左往右】遍历一次和【从右往左】遍历一次 class Solution { public: vector<.原创 2020-07-26 20:44:24 · 70 阅读 · 0 评论 -
【数组/分治】169. Majority Element
文章目录题目描述知识点结果实现码前思考代码实现码后反思 题目描述 知识点 数组 结果 实现 码前思考 直接暴力排序,返回size/2,即可求出众数(majority element其实就是众数的意思啊!) 代码实现 class Solution { public: int majorityElement(vector<int>& nums) { sort(nums.begin(),nums.end()); return nums[num.原创 2020-07-25 22:13:58 · 74 阅读 · 0 评论 -
LeetCode 75. Sort Colors【双指针+排序+数组】⭐⭐⭐⭐⭐
文章目录题目描述知识点结果实现码前思考代码实现暴力计数高级做法——双指针码后反思 题目描述 知识点 排序、数组、双指针 结果 实现 码前思考 题目要求in-place,而且还要尝试是否能够come up with a one-pass algorithm using only constant space; in-place我还可以,但是后面那个条件我有点想不到啊,所以只有暴力计数了; 代码实现 暴力计数 //想不出好的办法,直接传统吧,计数走起,后面再补 class Solution { pu.原创 2020-07-23 14:58:18 · 124 阅读 · 0 评论 -
LeetCode 56. Merge Intervals【排序+数组】⭐⭐⭐
文章目录题目描述知识点结果实现码前思考代码实现标准解题代码菜鸡解题代码码后反思 题目描述 知识点 排序,数组 结果 实现 码前思考 就是贪心算法区间合并。。。(虽然没说要最大化,但是这样做就是最大化的。。。) 代码实现 标准解题代码 class Solution { public: vector<vector<int>> merge(vector<vector<int>>& intervals) { sort(int.原创 2020-07-22 17:57:00 · 82 阅读 · 0 评论 -
LeetCode 48. Rotate Image【原地算法+矩阵转置+反转矩阵】⭐⭐⭐⭐⭐
文章目录题目描述知识点结果实现码前思考代码实现码后反思 题目描述 知识点 数组操作 结果 实现 码前思考 这道题我实现的实在是太蠢了,虽然是双百的结果,但是却用了我很长时间,我并不打算使用这种方法来写题解。。。 按照LeetCode题解的说法,应该先将矩阵转置,再将反转列向量。 矩阵转置 是(i,j)与(j,i)之间交换,因此可以实现原地; 反转列向量 这个我一开始没有想到怎么原地,后来看题解才发现,就是原地反转一维数组那种思想,第一列与最后一列置换,第二列与倒数第二列置换! 代码实现 clas.原创 2020-07-22 16:17:07 · 122 阅读 · 0 评论