![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数组
leetcode数组专栏
三Ⅶ
这个作者很懒,什么都没留下…
展开
-
498. 对角线遍历
给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。 其实这道题挺绕的,我当时做也一下子没搞清楚,设置了一大堆边界条件把自己设死了,后面看了题解发现可以每次都按照一个方向遍历对角线,只是偶数次遍历时将说得元素翻转。 图例: class Solution { public: vector<int> findDiagonalOrder(vector<vector<int>>& matr原创 2021-06-05 14:13:20 · 124 阅读 · 0 评论 -
leetcode 面试题 01.07. 旋转矩阵
直接构建新的数组,按照数学关系求取。 class Solution { public: void rotate(vector<vector<int>>& matrix) { int n = matrix.size(); auto m=matrix; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) .原创 2021-06-03 16:24:26 · 75 阅读 · 0 评论 -
leetcode 56合并区间
具体思路: 按照二维数组中的首元素队该数组进行排序,设定一个新数组m,若m为空或者两个区间不交叉(第一个区间的右边界是否小于第二个区间的左边界),那么添加新的边界,如果交叉,则直接修改右边界 class Solution { public: vector<vector<int>> merge(vector<vector<int>>& intervals) { if (intervals.size()==0) {.原创 2021-06-03 16:12:29 · 81 阅读 · 0 评论 -
leetcode 每日一题6-3
连续数组 这道题和6-2的每日一题思路(6-2每日一题)比较相似,都是利用前缀和+哈希表进行求解 我们设在nums[i]前每有一个1,那么前缀+1,每有一个零,那么前缀-1,那么如果在nums[i]-nums[j]之间0 1数量相等,则前缀也一定相等 举个例子 由图我们可以看出,有两组前缀和相等,之后在利用下标求出长度即可。 特殊情况: 在这种情况下,0只出现了一次,但是我们必须考虑这种情况所以在最开始预设一个mp[0]=-1 计算长度为3-()-1=4 class Solution { publi.原创 2021-06-03 15:42:53 · 59 阅读 · 0 评论 -
724. 寻找数组的中心下标
解题思路:设中心下标为c,若该元素前面元素之和等于该元素后面元素之和,则有2*(num1+num2+…num(c-1))+numc=该数组所有元素之和。 class Solution { public: int pivotIndex(vector<int>& nums) { int s=accumulate(nums.begin(),nums.end(),0); int sum=0; for(int i=0;i<nums.s.原创 2021-06-02 20:28:22 · 46 阅读 · 0 评论 -
leetcode 每日一题06-02(523)
连续的子数组和 给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组: 子数组大小 至少为 2 ,且 子数组元素总和为 k 的倍数。 如果存在,返回 true ;否则,返回 false 。 如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 x 是 k 的一个倍数。 解题思路 :哈希表+前缀和 设前n个数字之和为Sn,那么一个子数组(l,r)所有元素之和为Sr-Sl; 且若和为k的倍数,则有(Sr-Sl)%k=0;展开可得Sr%k.原创 2021-06-02 19:24:32 · 143 阅读 · 0 评论