数组
Saulty
这个作者很懒,什么都没留下…
展开
-
LeetCode 560. 和为K的子数组
LeetCode 560. 和为K的子数组题目题解代码题目题解前缀和 两种不同叠加顺序前缀和优化,利用哈希表若[j…i]区间和为k,则sum[j-1]=sum[i]-k每当计算到位置i的前缀和,查找前面是否有sum[i]-k的前缀和https://leetcode-cn.com/problems/subarray-sum-equals-k/solution/he-wei-kde-zi-shu-zu-by-leetcode-solution/代码// class Solution原创 2021-08-05 12:59:58 · 87 阅读 · 0 评论 -
LeetCode 238. 除自身以外数组的乘积
LeetCode 238. 除自身以外数组的乘积题目题解代码题目题解用除法考虑除0问题以及多个0的问题除自身以外数组的乘积=左边的积*右边的积先把对应的左边的积和右边的积分别存在两个数组中,直接取用即可为了减小空间复杂度,直接用结果数组存储左边的积,右边的积在计算结果的过程中直接乘上去代码// class Solution {// public:// vector<int> productExceptSelf(vector<int>& nu原创 2021-08-05 12:59:38 · 55 阅读 · 0 评论 -
LeetCode 334. 递增的三元子序列
LeetCode 334. 递增的三元子序列题目题解代码题目题解不一定连续二指针贪心算法设立small ,mid 指针代码class Solution {public: bool increasingTriplet(vector<int>& nums) { int n = nums.size(); if(n<3) return false; int small = INT_MAX, mid = INT_M原创 2021-08-05 12:59:03 · 73 阅读 · 0 评论 -
LeetCode 435. 无重叠区间
LeetCode 435. 无重叠区间题目题解代码题目题解题目的要求等价于「选出最多数量的区间,使得它们互不重叠」会出现,一个大区间包含多个小区间的情况动态规划动规五部曲:确定dp数组以及下标的含义:代表以第i个区间为最后一个区间,最多有多少个区间确定递推公式:dp[i] = max(dp[i], dp[j]+1);dp数组初始化:dp[0]=1;贪心算法代码// class Solution {// public:// int eraseOverlapIn原创 2021-08-04 13:45:12 · 61 阅读 · 0 评论 -
LeetCode 240. 搜索二维矩阵 II
LeetCode 240. 搜索二维矩阵 II题目题解代码题目题解从右上角开始遍历——找规律二分查找,分别查找行和列代码// class Solution {// public:// bool searchMatrix(vector<vector<int>>& matrix, int target) {// if(matrix.size()==0)// return false;//原创 2021-08-04 13:44:44 · 78 阅读 · 0 评论 -
LeetCode 59. 螺旋矩阵 II
LeetCode 59. 螺旋矩阵 II题目题解代码题目题解对于矩阵数组的操作找规律模拟代码// //遍历1-n*n// class Solution {// public:// vector<vector<int>> generateMatrix(int n) {// int curNum = 1;// vector<vector<int>> matrix(n, vector<int原创 2021-08-03 13:36:45 · 103 阅读 · 0 评论 -
LeetCode 48. 旋转图像
LeetCode 48. 旋转图像题目题解代码题目题解找规律:对于矩阵中第 i 行的第 j 个元素,在旋转后,它出现在倒数第 i 列的第 j 个位置。matrix[col][n−row−1]=matrix[row][col]因为旋转90度,图像中的四位互相交换位置,获得新的图像旋转=水平翻转+对角线翻转代码// class Solution {// public:// void rotate(vector<vector<int>>&原创 2021-08-03 13:36:28 · 71 阅读 · 0 评论 -
LeetCode 119. 杨辉三角 II
LeetCode 119. 杨辉三角 II题目题解代码题目题解row[j]=res[i-1][j-1]+res[i-1][j];代码class Solution {public: vector<int> getRow(int rowIndex) { vector<vector<int>> res(rowIndex+1); for(int i=0;i<=rowIndex;i++){ vecto原创 2021-08-03 13:36:09 · 56 阅读 · 0 评论 -
LeetCode 56. 合并区间
LeetCode 56. 合并区间题目题解代码题目题解先按每对左区间进行排序,后将区间遍历进最终的数组,比较最终结果的最后一个区间的右区间与排序中左区间的大小关系代码class Solution {public: vector<vector<int>> merge(vector<vector<int>>& intervals) { int n=intervals.size(); if(n==0)原创 2021-08-02 13:07:54 · 69 阅读 · 0 评论 -
LeetCode 75. 颜色分类
LeetCode 75. 颜色分类题目题解代码题目题解双指针,0往前放,2往后放代码class Solution {public: void sortColors(vector<int>& nums) { //sort(nums.begin(),nums.end()); int n=nums.size(); int p=0; int q=n-1; for(int i=0;i<=q;原创 2021-08-02 13:04:03 · 68 阅读 · 0 评论 -
LeetCode 15. 三数之和
LeetCode 15. 三数之和题目题解代码题目题解代码class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> res; if(nums.size()<3) return res; sort(nums.begi原创 2021-08-01 12:09:36 · 53 阅读 · 0 评论 -
LeetCode 169. 多数元素
LeetCode 169. 多数元素题目题解代码题目题解先排序,后找出中间的数代码class Solution {public: int majorityElement(vector<int>& nums) { sort(nums.begin(),nums.end()); return nums[nums.size()/2]; }};...原创 2021-08-01 12:09:03 · 60 阅读 · 0 评论 -
LeetCode 73. 矩阵置零
LeetCode 73. 矩阵置零题目题解代码题目题解遍历数组每一个元素,若为0,将对应的行,列元素标记为0并且visited数组来进行标记代码class Solution {public: void setZeroes(vector<vector<int>>& matrix) { int m=matrix.size(); int n=matrix[0].size(); vector<vector&原创 2021-07-22 12:33:57 · 55 阅读 · 0 评论 -
LeetCode 36. 有效的数独
LeetCode 36. 有效的数独题目题解代码题目题解遍历每一个元素每行创建一个哈希表每列创建一个哈希表每3*3的格子创建一个哈希表 int box_index = (i / 3 ) * 3 + j / 3;代码class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { unordered_map<int,int> rows[9]原创 2021-07-22 12:33:22 · 55 阅读 · 0 评论 -
LeetCode 118. 杨辉三角
LeetCode 118. 杨辉三角题目题解代码题目题解row[j]=res[i-1][j-1]+res[i-1][j];代码class Solution {public: vector<vector<int>> generate(int numRows) { vector<vector<int>> res(numRows); for(int i=0;i<numRows;i++){原创 2021-07-21 11:55:51 · 52 阅读 · 0 评论 -
LeetCode 566. 重塑矩阵
LeetCode 566. 重塑矩阵题目题解代码题目题解先存进一维数组,后放入二维数组二维数组的一维表示映射处理:二维数组中(i,j)元素是第i×n+j个代码class Solution {public: vector<vector<int>> matrixReshape(vector<vector<int>>& mat, int r, int c) { int m=mat.size();原创 2021-07-21 11:55:22 · 59 阅读 · 0 评论 -
LeetCode 121. 买卖股票的最佳时机
LeetCode 121. 买卖股票的最佳时机题目题解代码题目题解动态规划动态规划 前i天的最大收益 = max{前i-1天的最大收益,第i天的价格-前i-1天中的最小价格}代码// class Solution {// public:// int maxProfit(vector<int>& prices) {// int res=0;// for(int i=0;i<prices.size()-1;i++){/原创 2021-07-20 21:49:37 · 60 阅读 · 0 评论 -
350. 两个数组的交集 II
LeetCode 350. 两个数组的交集 II题目题解代码题目题解哈希表短的数组先进哈希表,键为数组元素,值为数组元素出现的次数,长的数组,每找到一个,相应值减一哈希表考虑用for (int num : nums1) { ++m[num];}遍历数组更为方便数组长短对于算法的影响if (nums1.size() > nums2.size()) {return intersect(nums2, nums1);}排序+双指针代码// class Solution {/原创 2021-07-20 21:49:14 · 143 阅读 · 0 评论 -
LeetCode 88. 合并两个有序数组
LeetCode 88. 合并两个有序数组题目题解代码题目题解不利于有序先插入后排序利用有序从后往前插入,比较nums1和nums2最后一位有效位,进行swap操作代码// class Solution {// public:// void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {// for(int i=0;i<n;i++){原创 2021-07-19 22:35:02 · 50 阅读 · 0 评论 -
LeetCode 46. 全排列
LeetCode 46. 全排列题目题解代码题目给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]提示:1 <= nums.length <= 6-10原创 2021-07-14 12:55:37 · 56 阅读 · 0 评论 -
LeetCode 77. 组合
LeetCode 77. 组合题目题解代码题目给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]题解参考https://leetcode-cn.com/problems/combinations/solution/dai-ma-sui-xiang-lu-dai-ni-xue-tou-hui-s-0uql/回溯法=树的深度优先遍原创 2021-07-14 12:54:48 · 79 阅读 · 0 评论 -
LeetCode 994. 腐烂的橘子
LeetCode 994. 腐烂的橘子题目题解代码题目在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。题解数组的广度优先遍历将腐烂的橘子装进队列,设置visiteddist数组用来记录好橘子到腐烂橘子的距离数组广度优先遍历队列存放两个坐标,设visited数组树广原创 2021-07-12 12:57:07 · 57 阅读 · 0 评论 -
LeetCode 542. 01 矩阵
LeetCode 542. 01 矩阵题目题解代码题目给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:[[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0,0],[0,1,0],[0,0,0]]示例 2:输入:[[0,0,0],[0,1,0],[1,1,1]]输出:[[0,0,0],[0,1,0],[1,2,1]]提示:给定矩阵的元素个数不超过 10000。给定矩阵中至少有一个元原创 2021-07-12 12:56:22 · 79 阅读 · 0 评论 -
LeetCode 695. 岛屿的最大面积
LeetCode 695. 岛屿的最大面积题目题解代码题目给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,原创 2021-07-10 12:42:24 · 87 阅读 · 0 评论 -
LeetCode 733. 图像渲染
LeetCode 3. 无重复字符的最长子串题目题解代码题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。原创 2021-07-10 12:38:43 · 95 阅读 · 1 评论 -
LeetCode 167. 两数之和 II - 输入有序数组
LeetCode 167. 两数之和 II - 输入有序数组题目题解代码题目给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示原创 2021-07-06 12:35:06 · 68 阅读 · 0 评论 -
LeetCode 977. 有序数组的平方
LeetCode 977. 有序数组的平方题目题解代码题目给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= nums.l原创 2021-07-06 11:08:57 · 42 阅读 · 0 评论 -
LeetCode 189. 旋转数组
LeetCode 189. 旋转数组题目题解代码题目给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3原创 2021-07-06 11:08:07 · 68 阅读 · 0 评论 -
LeetCode 283. 移动零
LeetCode 283. 移动零题目题解代码题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。题解简单暴力遍历数组,遇到0,将往后的元素向前移动一位,最后一位为0双指针类似快排,以0为分界点指针i左边全为非零元素,指针j与指针i之间全为零代码class Solution {public:原创 2021-07-06 11:06:21 · 104 阅读 · 1 评论