![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
sususuqingxiao
这个作者很懒,什么都没留下…
展开
-
119. 杨辉三角 II C++ 2021-09-01
119. 杨辉三角 II1、倒着相加class Solution {public: vector<int> getRow(int rowIndex) { vector<int> result; for(int i = 0; i <= rowIndex; ++i) { result.push_back(1); for(int j = i - 1; j >原创 2021-09-01 15:38:00 · 83 阅读 · 0 评论 -
25. K 个一组翻转链表 C++ 2021-08-28
K 个一组翻转链表/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x.原创 2021-08-28 22:21:52 · 55 阅读 · 0 评论 -
135. 分发糖果 C++ 2021-08-24
135. 分发糖果class Solution {public: int candy(vector<int>& ratings) { int len = ratings.size(); vector<int> left(len, 1); vector<int> right(len, 1); vector<int> count(len, 1); fo原创 2021-08-24 23:02:02 · 324 阅读 · 0 评论 -
394. 字符串解码 C++ (难理解) 2021-08-23
字符串解码1、递归写法(掌握)class Solution {public: int stoi(string temp_k) { int res = 0; int size = temp_k.size(); for (int i = 0; i < size; ++i) { res = res * 10 + (temp_k[i] - '0');//注意这个减 '0' } .原创 2021-08-23 22:43:25 · 227 阅读 · 0 评论 -
leetcode 692. 前K个高频单词 (百度)2021-08-03
https://leetcode-cn.com/problems/top-k-frequent-words/class Solution {public: class cmp { public: bool operator()(const pair<string, int>& lhs, const pair<string, int>& rhs) { return lhs.second原创 2021-08-03 23:25:52 · 55 阅读 · 0 评论 -
leetcode 42. 接雨水 (双指针,动态规划) c++ 2021-07-22
暴力解法class Solution {public: int trap(vector<int>& height) { if (height.size() == 0) return 0; int sum = 0; for (int i = 1; i < height.size() - 1; i++) { int rheight = height[i.原创 2021-07-22 23:38:33 · 99 阅读 · 1 评论 -
最大重叠区间数问题(华为) 2021-07-21
1、自动驾驶出租车订单分配某城市开展自动驾驶出租车试运营,在城市里面设置了N个固定的,上下客出租车站点,为了方便计算,假设这些站点呈圆形部署。相邻2个站点的行车时间固定为5 ,每个站点内的出租车数目足够多,每辆出租车运行的时候在圆形线路上运行,方向可以顺时针也可以逆时针,选择最短的路线运行,如果起始和终点相同,则为无效订单。不处理。现在有N个乘客使用APP下发订单,包含使用出租车的时间,上车的站点下车的站点,请计算整个运作周期最多有多少辆出租车同时运营。下车时间点的车辆不计算在运行车辆中。解答要求时间原创 2021-07-21 22:06:00 · 839 阅读 · 0 评论 -
字节 找出最近时间(回溯) C++ 2021-07-17
输入一个现在时间例如 19:12输出距离它最近的时间(在19:12之后,按照现实生活来) 19:21如果是19:11则代表到了第二天,则距离当前时间19:12更久了#include <bits/stdc++.h>using namespace std;class Solution{public: string findNextTime(string& s) { vector<int> s2i; for (aut原创 2021-07-17 10:55:59 · 205 阅读 · 0 评论 -
leetcode 28. 实现 strStr() KMP next数组 图解 (c++) 2021-07-15
来源 :https://www.cnblogs.com/c-cloud/p/3224788.html原创 2021-07-15 11:21:34 · 56 阅读 · 0 评论 -
leetcode 51. N 皇后 c++ 2021-07-13
class Solution {private: vector<vector<string>> result; // n 为输入的棋盘大小 // row 是当前递归到棋牌的第几行了 void backtracking(int n, int row, vector<string>& chessboard); bool isValid(int row, int col, vector<string>& c.原创 2021-07-13 22:32:56 · 65 阅读 · 0 评论 -
leetcode 332. 重新安排行程 (回溯/DFS)c++ 2021-07-13
//恶心哦class Solution {public: vector<string> findItinerary(vector<vector<string>>& tickets) { int ticketNum = tickets.size() + 1; for (const vector<string>& target : tickets) { .原创 2021-07-13 21:30:15 · 87 阅读 · 0 评论 -
leetcode 47. 全排列 II c++ (回溯)(回看)2021-07-13
单层逻辑的重点 : if (used[i] == false)//关键是借助这个来判断哪些用了哪些没用 排列就不用startIndexclass Solution {private: vector<vector<int>> result; vector<int> path; void backTracking(vector<int>& nums, vector<bool>& used);publi.原创 2021-07-13 11:23:09 · 74 阅读 · 0 评论 -
leetcode 491. 递增子序列 c++(回溯 回看)2021-07-12
无法排序的同层去重class Solution {private: vector<vector<int>> result; vector<int> path; void backTracking(vector<int> &nums, int startIndex);public: vector<vector<int>> findSubsequences(vector<int>&.原创 2021-07-12 23:11:46 · 139 阅读 · 1 评论 -
leetcode 90. 子集 II (回溯) c++ 2021-07-12
//注意sort , 使用usedclass Solution {private: vector<vector<int>> result; vector<int> path; void backTracking(vector<int>& nums, int startIndex, vector<bool> used); public: vector<vector<int>&g.原创 2021-07-12 22:29:02 · 79 阅读 · 0 评论 -
leetcode 78. 子集 c++ (回溯) 2021-07-12
class Solution {private: vector<vector<int>> result; vector<int> path; void backTracking(vector<int>& nums, int count, int startIndex);public: vector<vector<int>> subsets(vector<int>& nu.原创 2021-07-12 22:11:09 · 88 阅读 · 0 评论 -
leetcode 46. 全排列 c++ (回溯排列问题)(回看)2021-07-11
回溯排列问题, 配合used数组, 不用startIndex, 每次回溯都要从头遍历。class Solution {private: vector<vector<int>> result; vector<int> path; void backTracking(vector<int>& nums, vector<bool>& used);public: vector<vector<.原创 2021-07-11 22:51:15 · 62 阅读 · 0 评论 -
(回看)leetcode 93. 复原 IP 地址 c++ (回溯)2021-07-11
两种方法(思想)1、拆分字符串 分成四段2、想着怎么把3个点插进字符串class Solution {private: vector<string> result; vector<string> path;//和之前写回溯一样 为了push_back 与pop_back操作方便 void backTracking(string &s, int k, int num, int startIndex, int splitIndex); .原创 2021-07-11 22:16:04 · 152 阅读 · 1 评论 -
leetcode 40. 组合总和 II 回溯 c++ 2021-07-11(回看)
class Solution {private: vector<vector<int>> result; vector<int> path; void backTracking(vector<int>& candidates, int target, int sum, int startIndex, vector<bool>& used);public: vector<vector<.原创 2021-07-11 19:58:36 · 76 阅读 · 0 评论 -
leetcode 131. 分割回文串 c++ 【回溯模板】 排列问题 2021-07-11
class Solution {private: vector<vector<string>> result; vector<string> path; bool isPalindrome(const string &str); void backTracking(const string &s, int startIndex); public: vector<vector<string>&.原创 2021-07-11 15:52:04 · 102 阅读 · 0 评论 -
leetcode 39. 组合总和 回溯剪枝 c++ 2021-07-11
class Solution {private: vector<vector<int>> result; vector<int> path; void backTracking(vector<int>& candidates, int target, int sum, int startIndex);public: vector<vector<int>> combinationSum(vec.原创 2021-07-11 15:22:05 · 70 阅读 · 0 评论 -
leetcode 回溯 17. 电话号码的字母组合 c++ 2021-07-11
class Solution {private: vector<string> result; string path; const string letterMap[10] = { "", // 0 "", // 1 "abc", // 2 "def", // 3 "ghi", // 4 "jkl", // 5 "mno", // 6.原创 2021-07-11 14:46:10 · 79 阅读 · 0 评论 -
leetcode 216. 组合总和 III c++ 2021-07-10
class Solution {public: vector<vector<int>> combinationSum3(int k, int n) { backTracing(k, n, 0, 1); return result; }private: vector<vector<int>> result; vector<int> path; void .原创 2021-07-10 22:51:57 · 57 阅读 · 2 评论 -
leetcode 77. 组合 c++ 2021-07-10
这是一个回溯题class Solution {private: vector<int> path; vector<vector<int>> result; int startIndex; void backTracking (int n, int k, int startIndex) { if (path.size() == k) { result.push_back(p.原创 2021-07-10 17:48:23 · 105 阅读 · 0 评论 -
leetcode 77. 组合 C++ (回溯)2021-07-08
class Solution {private: vector<int> path; // 用来存放符合条件结果 vector<vector<int>> result;// 存放结果的集合 void backTracking (int n, int k, int startIndex) { if (path.size() == k) { result.p.原创 2021-07-08 10:45:54 · 112 阅读 · 0 评论 -
leetcode 115. 不同的子序列 C++ 2021-07-07
class Solution {public: int numDistinct(string s, string t) { int lens = s.size(); int lent = t.size(); vector<vector<uint64_t>> dp(lent + 1, vector<uint64_t>(lens + 1));//t逐渐变大 在s中遍历 s中t的个数 fo.原创 2021-07-07 22:53:48 · 115 阅读 · 1 评论 -
leetcode 392. 判断子序列 C++ 2021-07-07
class Solution {public: bool isSubsequence(string s, string t) { int lens = s.size(); int lent = t.size(); int pos = 0;//定位在t中找到前一个和s一样的字符后的 比较起点 if (lens > lent) return false; for (int i .原创 2021-07-07 11:50:06 · 124 阅读 · 0 评论 -
leetcode 53. 最大子序和 C++ 2021-07-07
//动态规划解法class Solution {public: int maxSubArray(vector<int>& nums) { int len = nums.size(); if (len == 1) return nums[0]; vector<int> dp(len);//以nums[i] 结尾的最大子序和 dp[0].原创 2021-07-07 10:20:09 · 50 阅读 · 0 评论 -
leetcode 718. 最长重复子数组 C++ 2021-07-06
子序列默认不连续,子数组默认连续//时间复杂度O(n * m) n 为A长度,m为B长度//空间复杂度O(n * m)//个人觉得那个滑动窗口的写法更复杂,需要考虑多种情况,反而动态规划的方法更直观class Solution {public: int findLength(vector<int>& nums1, vector<int>& nums2) { int nums1_len = nums1.size(); .原创 2021-07-06 16:32:03 · 104 阅读 · 0 评论 -
leetcode 188. 买卖股票的最佳时机 IV C++ 2021-07-04
这个题,我都不知道为什么了,但是我知道这么写就行了,理解个锤锤动态规划啊,直接梭哈就通过了。class Solution {public: int maxProfit(int k, vector<int>& prices) { vector<int> hold(k + 1, INT_MIN); vector<int> release(k + 1, 0); // Assume we only have 0 mo.原创 2021-07-03 23:06:09 · 89 阅读 · 1 评论 -
leetcode 123. 买卖股票的最佳时机 III C++ 2021-07-03
这几个题都是一样的套路,就是看好每天的状态,对其进行更新,保证每种操作都使得你的钱包里面钱最多。class Solution {public: int maxProfit(vector<int>& prices) { int hold1 = INT_MIN, hold2 = INT_MIN;//注意这个初始化,以及后面先是第二次卖 第二次买 第一次卖 第一次买 这样就可以在for循环时担心第一天就有卖第二次和第一次 int rele.原创 2021-07-03 22:32:36 · 44 阅读 · 0 评论 -
leetcode 122. 买卖股票的最佳时机 II C++ 2021-07-03
class Solution {public: int maxProfit(vector<int>& prices) { int profit = 0; for (int i = 1; i < prices.size(); i++) { if (prices[i] > prices[i - 1]) profit += prices[i] - price.原创 2021-07-03 20:15:48 · 95 阅读 · 0 评论 -
leetcode 121. 买卖股票的最佳时机 C++ 2021-07-03
c++代码首先想到暴力解法,这是最直观的O(n^2) O(1) 会超时class Solution {public: int maxProfit(vector<int>& prices) { int profit = 0; int len = prices.size(); for (int i = 0; i < len - 1; i++) { for (int j =.原创 2021-07-03 16:22:50 · 42 阅读 · 0 评论 -
leetcode 337. 打家劫舍 III C++ 2021-07-02
C++代码递归的思想去做,只能后序遍历,层序行不通。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nu.原创 2021-07-02 16:56:50 · 89 阅读 · 0 评论 -
leetcode 198. 打家劫舍 C++ 2021-07-01
class Solution {public: int rob(vector<int>& nums) { int n = nums.size();// n间房屋 if (n == 0) return 0; if (n == 1) return nums[0]; vector<int> dp(n, 0);//dp[i] 代表 0-i之间能投的最.原创 2021-07-01 20:14:39 · 55 阅读 · 0 评论 -
leetcode 139. 单词拆分 C++ 2021-07-01
递推公式是 if([j, i] 这个区间的子串出现在字典里 && dp[j]是true) 那么 dp[i] = trueclass Solution {//时间O(n^3) 空间O(n)public: bool wordBreak(string s, vector<string>& wordDict) { int len = s.size(); unordered_set<string> wordSet(.原创 2021-07-01 19:04:49 · 107 阅读 · 0 评论 -
背包解题技巧 leetcode 377. 组合总和 Ⅳ C++ 2021-06-30
参考1、关于背包问题技巧2、动态规划参考C++代码class Solution {public: int combinationSum4(vector<int>& nums, int target) { vector<int> dp(target + 1, 0); dp[0] = 1; for (int i = 0; i <= target; i++) // 遍历背包 {原创 2021-06-30 11:26:16 · 67 阅读 · 0 评论 -
leetcode 518. 零钱兑换 II C++ 2021-06-30
C++代码完全背包问题class Solution {public: int change(int amount, vector<int>& coins) { vector<int> dp(amount+1, 0); int len = coins.size(); dp[0] = 1; for (int i = 0; i < len; ++i) { .原创 2021-06-30 10:40:06 · 71 阅读 · 0 评论 -
leetcode 494. 目标和 C++ 2021-06-29
C++ 代码class Solution {public: int findTargetSumWays(vector<int>& nums, int target) { int sum = 0; for (auto &x : nums) sum += x; if (target > sum) return 0; if ((sum + tar.原创 2021-06-29 17:47:57 · 101 阅读 · 0 评论 -
leetcode 1049. 最后一块石头的重量 II C++ 2021-6-29
想法就是尽可能的把石头等分成两堆,和等分子集一样。c++ 代码public: int lastStoneWeightII(vector<int>& stones) { int len = stones.size();// int sum = 0; for (int &x : stones) sum += x; int bag = sum / 2; //背包容量 .原创 2021-06-29 16:43:32 · 93 阅读 · 0 评论 -
leetcode 416. 分割等和子集 c++ 2021-06-28
c++代码class Solution {public: bool canPartition(vector<int>& nums) { int len = nums.size();// int sum = 0; for (int &x : nums) sum += x; if (sum % 2 != 0)//如果不是偶数肯定不能平分,都是整数 r.原创 2021-06-28 17:40:12 · 165 阅读 · 0 评论