![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
leetcode
刷题
哞哞哞咩咩咩
记录日常学习
展开
-
leetcode.单调栈,单调队列
单调栈是什么?找出数组中每个数右边第一个比它大的元素单调递增栈我们用栈来保存未找到右边第一个比它大的元素的索引(保存索引是因为后面需要靠索引来给新数组赋值)#include<iostream>#include<stack>#include<vector>using namespace std;vector<int> RightFirstGreater(vector<int>nums) { vector<int>原创 2020-07-17 15:17:39 · 152 阅读 · 0 评论 -
leetcode.滑动窗口
424.替换后的最长重复字符思考点class Solution {public: int characterReplacement(string s, int k) { int res = 0; int l=0,r=0; int sz = s.size(); vector<int>v(26,0); int maxnum = 0; while(r < sz) {原创 2020-08-16 23:16:48 · 64 阅读 · 0 评论 -
Morris遍历算法
中序遍历空间优化O(1)leetcode:一文掌握Morris遍历算法struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} TreeNode(int x, Tree原创 2020-08-09 17:59:38 · 159 阅读 · 0 评论 -
leetcode.二分法
1300.转变数组后最接近目标值的和思路class Solution {public: int findBestValue(vector<int>& arr, int target) { int right = INT_MIN; int left = 0; for (auto& v : arr) { //找到最大的数,作为右指针 right = max(right, v); } //二分法,找到第一个使得sum大于target的数原创 2020-06-14 01:21:31 · 179 阅读 · 0 评论 -
leetcode.子序列问题
334.递增的三元子序列思路class Solution {public: bool increasingTriplet(vector<int>& nums) { int len = nums.size(); if (len < 3) return false; int small = INT_MAX, mid = INT_MAX;...原创 2020-04-23 23:25:06 · 293 阅读 · 0 评论 -
leetcode.二叉树
199.二叉树的右视图法一. BFSclass Solution {public: vector<int>res; vector<int> rightSideView(TreeNode* root) { if (!root) return res; queue<TreeNode*>q; q.push(root); while ...原创 2020-04-23 01:05:55 · 118 阅读 · 0 评论 -
leetcode.动态规划专题
1143.Longest Common Subsequence(LCS)二维数组存储class Solution {public: int longestCommonSubsequence(string text1, string text2) { vector<vector<int>>dp(text1.size() + 1, vector...原创 2020-04-19 22:39:28 · 154 阅读 · 0 评论 -
leetcode.杂
参考快慢指针class Solution {public: int findDuplicate(vector<int>& nums) { int fast = 0, slow = 0; while (true) { fast = nums[nums[fast]]; slow = nums[slow]; if (fast == slow) ...原创 2020-04-18 23:20:02 · 141 阅读 · 0 评论 -
leetcode.DFS or BFS专题
矩阵中的路径class Solution {public: int dx[4] = { -1,0,1,0 }, dy[4] = { 0,1,0,-1 }; bool exist(vector<vector<char>>& board, string word) { int r = board.size(); int c = board[0].siz...原创 2020-04-18 22:19:29 · 118 阅读 · 0 评论 -
leetcode887.鸡蛋掉落
转载自labuladong题解思路复杂度解法一(超时):class Solution: def superEggDrop(self, K: int, N: int) -> int: memo = dict() def dp(K, N) -> int: # base case if K ...转载 2020-04-16 22:29:43 · 96 阅读 · 0 评论 -
leetcode最短路径专题
542.01矩阵思路复杂度时间复杂度:O(rc)O(rc)O(rc),其中 r 为矩阵行数,c 为矩阵列数,即矩阵元素个数。广度优先搜索中每个位置最多只会被加入队列一次,因此只需要 O(rc)O(rc)O(rc) 的时间复杂度。空间复杂度:O(rc)O(rc)O(rc),其中 r 为矩阵行数,c 为矩阵列数,即矩阵元素个数。除答案数组外,最坏情况下矩阵里所有元素都为 0,全部被加入队列...原创 2020-04-15 13:52:45 · 1951 阅读 · 0 评论 -
leetcode图论专题
207.课程表方法一:BFS思路用map记录每门课的后续课程,创建入度表,入度为0要入队。每个元素依次出队,最后看出队数是否等于总课程数,就可以判断图是否有环,有环证明逻辑错误复杂度时间复杂度 O(N+M)O(N + M)O(N+M): 遍历一个图需要访问所有节点和所有临边,N 和 M 分别为节点数量和临边数量;空间复杂度 O(N+M)O(N + M)O(N+M): 为建立邻接表所...原创 2020-04-15 12:28:40 · 730 阅读 · 0 评论 -
leetcode字典树专题
208.实现Trie(前缀树)思路成员变量flag定义为单词结束的标志,实现search方法时要用到这个flag。字典树的每个节点看作是Tire类的一个对象,next数组(指针数组,每个指针指向一个Tire对象)初始化为nullptr。注意根节点的移动。class Trie{private: bool flag = false; Trie* next[26] = { nullptr...原创 2020-04-14 22:12:35 · 294 阅读 · 0 评论 -
leetcode数论专题
367.完全平方数1 = 1;4 = 1 + 3;9 = 1 + 3 + 5;16 = 1 + 3 + 5 + 7;N*N = 1 + 3 + 5 + … + (2N - 1)数学规律时间:O(sqrt(num))O(sqrt(num))O(sqrt(num))空间:O(1)O(1)O(1)class Solution {public: bool isPerfect...原创 2020-04-12 21:08:24 · 212 阅读 · 0 评论 -
leetcode字符串专题
151.翻转字符串里的单词class Solution{public: string reverseWords(string s) { reverse(s.begin(), s.end()); int size = (int)s.size(); int start = 0; //每个单词开始 int end =...原创 2020-04-10 18:13:16 · 153 阅读 · 0 评论 -
leetcode回溯专题
22.括号生成class Solution{public: vector<string> res; vector<string> generateParenthesis(int n) { if (n == 0) return {}; string track; //可用的...原创 2020-04-09 20:22:37 · 133 阅读 · 0 评论