LeetCode189:轮转数组
题目描述: 方法1:用一个新数组存最后 k 个数字,然后把最后 k 个数字之前的数字依次向后移动 k 位,最后把新数组中数组存回原数组头部 class Solution { public: void rotate(vector<int>& nums, int k) { vec
题目描述: 方法1:用一个新数组存最后 k 个数字,然后把最后 k 个数字之前的数字依次向后移动 k 位,最后把新数组中数组存回原数组头部 class Solution { public: void rotate(vector<int>& nums, int k) { vec
方法1:双指针,快指针遍历数组,慢指针表示新数组数组最后一个元素的下标位置 class Solution { public: int removeDuplicates(vector<int>& nums) { int slow = 0, fast = 1; w
方法1: 双指针不断遍历nums1和nums2数组,不断把结果放入新数组中,最后把新数组赋值给nums1 class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
题目描述: 方法1:暴力搜索,两个for循环 class Solution { public: int minSubArrayLen(int target, vector<int>& nums) { int min = INT_MAX; for(int i=0
题目描述: 方法1:直接平方,然后排序 class Solution { public: vector<int> sortedSquares(vector<int>& nums) { for(int i=0;i<nums.size();i++){ nu
题目描述: 方法1:使用双指针,快慢指针,慢指针用于将所有不等于val的元素前移,fast指针用于寻找每个不等于val的元素 class Solution { public: int removeElement(vector<int>& nums, int val) { in
题目描述: 方法1:二分查找 注意点: middle = (left + right) / 2,最好改为middle = left + ((right - left) / 2),不然可能会发生溢出 left <= right,而不是< class Solution { public: int
题目描述: 方法1:回溯,全部在原字符串处理,即backtrack参数一直是原字符串,len表示起始位置 class Solution { public: vector<string> result; vector<string> data; bool judge(strin
题目描述: 方法1:排列形式的完全背包问题 #include <iostream> #include <vector> using namespace std; int climb(int n,int m){ vector<int> dp(n+1,0); dp[0] = 1;
纯完全背包(题型1,3)考虑的是最大价值,所以不用管遍历顺序 求最小数(题型4)也不用管遍历顺序 01背包 二维初始化:j >= weight[0]时,dp[0][j] = value[0],(题型1,3),dp[0][0]分情况讨论或dp[0][0] = 1,其余全0(题型2,参考目标和) 一维初