LeetCode152:乘积最大子数组

题目描述: 方法1:动态规划,dp_max与dp_min 分别表示遍历 i 时,以 i 结尾的子数组最大乘积和最小乘积 class Solution { public: int maxProduct(vector<int>& nums) { int dp_max = nums


LeetCode48:旋转图像

题目描述: 方法1:用一个辅助矩阵来存旋转后的矩阵,然后把辅助矩阵赋值给原矩阵(矩阵第一列是旋转过的第一行,第二列是第二行) class Solution { public: void rotate(vector<vector<int>>& matrix) { int n =


LeetCode75:颜色分类

题目描述: 方法1:单指针,两次循环,第一次把0移到前面,第二次把1移到前面 class Solution { public: void sortColors(vector<int>& nums) { int n = nums.size(); int pos


LeetCode15:三数之和

题目描述: 重点:与两数之和不同,两数之和只用返回一个下标组合,三数之和是返回所有元素组合,且不重复 方法1:使用双指针,对数组排序后,i 从0遍历到 n-3,左指针是 i+1,右指针是 n-1,然后记得去重 如果nums[i]大于0,返回结果 如果nums[i] + nums[left]大于0,遍


LeetCode125:验证回文串

题目描述: 方法1:先去掉所有非字母数字的字符,然后全部变为小写或者大写,然后反转后比一遍


LeetCode189:轮转数组

题目描述: 方法1:用一个新数组存最后 k 个数字,然后把最后 k 个数字之前的数字依次向后移动 k 位,最后把新数组中数组存回原数组头部 class Solution { public: void rotate(vector<int>& nums, int k) { vec


LeetCode26:删除有序数组中的重复项

方法1:双指针,快指针遍历数组,慢指针表示新数组数组最后一个元素的下标位置 class Solution { public: int removeDuplicates(vector<int>& nums) { int slow = 0, fast = 1; w


LeetCode88:合并两个有效数组

方法1: 双指针不断遍历nums1和nums2数组,不断把结果放入新数组中,最后把新数组赋值给nums1 class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {


LeetCode209:长度最小的子数组

题目描述: 方法1:暴力搜索,两个for循环 class Solution { public: int minSubArrayLen(int target, vector<int>& nums) { int min = INT_MAX; for(int i=0


LeetCode977:有序数组的平方

题目描述: 方法1:直接平方,然后排序 class Solution { public: vector<int> sortedSquares(vector<int>& nums) { for(int i=0;i<nums.size();i++){ nu