![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Leetcode刷题
Leetcode刷题记录4-16开始
素默
这个作者很懒,什么都没留下…
展开
-
2021-06-11 Leetcode491、60
如何解决string 去除一个字符问题!?https://www.bilibili.com/video/BV1AJ411a7fB?from=search&seid=16572044708874072107还是用一个vector来mark效果最好!!class Solution {public:vector<string> vt; string getPermutation(int n, int k) { set<int> ...原创 2021-06-11 21:50:23 · 136 阅读 · 2 评论 -
2021-06-10Leetcode216、377
依然是要抓住24个字母char,这里用map, 注意map.second这个可以是0,但为0不可以,要判断!!class Solution {public:int ans; int numTilePossibilities(string tiles) { map<char, int> dict; for(auto a: tiles){ dict[a]++; } backtracking(d.原创 2021-06-10 21:57:55 · 71 阅读 · 0 评论 -
2021-06-08二叉树路径问题
https://leetcode-cn.com/problems/longest-univalue-path/solution/yi-pian-wen-zhang-jie-jue-suo-you-er-cha-94j7/Leetcode114解题的关键是:左子树的最下最右的节点,是右子树的父节点.为什么一个先序遍历,我用后序?回溯算法!! 从右到左的进行排序! last真的只记录这个顺序的上一个 因为left==nullptr,必定会有丢失! TreeNode* l...原创 2021-06-08 22:22:06 · 92 阅读 · 0 评论 -
2021-05-30
10class Solution {public: bool isMatch(string s, string p) { int i=0, j=0; while(i < s.size() && j< p.size()){ if(s[i]==p[j] || p[j]=='.'){ i++; }else if(p[j]=='*'){原创 2021-05-31 23:27:03 · 51 阅读 · 0 评论 -
2021-05-19Leetcode30/76
正确的一定是m*n长度的,外层循环,满足这个再内圈循环, 有一个mark不需要变? 就是dict,但建立一个temp,每次的循环检查都可以出来一个temp 题目字典序中每个都是等长度的。class Solution {public: vector<int> findSubstring(string s, vector<string>& words) { vector<int> ans; int n = w...原创 2021-05-19 23:07:45 · 78 阅读 · 0 评论 -
2021-05-18Leetcode205/299/385/136
为什么只有再i+1时才能实现呢? i+3都行??class Solution {public: bool isIsomorphic(string s, string t) { int ss[126] = {0}; int tt[126] = {0}; if(s.size() != t.size()) return false; for(int i=0; i<s.size(); i++){ ss...原创 2021-05-18 23:43:29 · 122 阅读 · 0 评论 -
2021-05-17Leetcode187/290
187.class Solution {public: vector<string> findRepeatedDnaSequences(string s) { vector<string> ans; unordered_set<string> dict; if(s.size()< 10) return ans; int l =0, r = 9; while(r<.原创 2021-05-18 09:48:52 · 73 阅读 · 0 评论 -
2021-05-16哈希表
49.没有顺序的要分类,一定要排序下!!、 排序之后就可以找到唯一的keyclass Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { vector<vector<string>> ans; unordered_map<string, vector<string&..原创 2021-05-17 18:05:28 · 100 阅读 · 0 评论 -
2021-05-13字符串太难了!
38.第二种反而效率更高一些!class Solution {public: string countAndSay(int n) { return helper("1", n, 1); } string helper(string s, int n, int index){ if(index == n){ return s; } int nums =1; s..原创 2021-05-14 11:09:20 · 94 阅读 · 0 评论 -
2021-05-11Leetcode树
700.反了个方向,注意!!!//这个就是对的class Solution {public:TreeNode* searchBST(TreeNode* root, int val) { if(root == nullptr || root->val == val) return root; if(root->val > val) return searchBST(root->left, val); if(root-&g.原创 2021-05-12 09:53:30 · 56 阅读 · 0 评论 -
2021-05-10Leetcode树938/894/783
938.class Solution {public: int ans; int rangeSumBST(TreeNode* root, int low, int high) { dfs(root, low, high); return ans; } void dfs(TreeNode* root, int low, int high){ if(root==nullptr) return; dfs(原创 2021-05-10 23:32:57 · 51 阅读 · 0 评论 -
2021-05-09树563/814/589/429/590/
563.class Solution {public:int ans =0; int findTilt(TreeNode* root) { dfs(root); return ans; } int dfs(TreeNode* root){ if(root==nullptr) return 0; int l, r; if(root->left) { l = .原创 2021-05-09 19:11:13 · 53 阅读 · 0 评论 -
2021-05-08Leetcode树1367/1171/114/100/222/230/671/508/572
1367哪个地方是起点?请递归? 哪条路径是对的,请递归一个个找class Solution {public: bool isSubPath(ListNode* head, TreeNode* root) { if(root== nullptr) return false; return isSub(head, root) || isSubPath(head, root->left) || isSubPath(head, root->ri.原创 2021-05-08 23:09:17 · 91 阅读 · 0 评论 -
2021-05-07链表206/92/160/203/237/1721/1019/1669
206class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* dummyHead = new ListNode; dummyHead->next = nullptr; ListNode* cur = head; ListNode* next; while(cur){ next = cu..原创 2021-05-07 22:50:53 · 113 阅读 · 0 评论 -
2021-05-06链表
25.public ListNode reverseKGroup(ListNode head, int k) { ListNode dummy = new ListNode(0); dummy.next = head; ListNode pre = dummy; ListNode end = dummy; while (end.next != null) { for (int i = 0; i < k && end原创 2021-05-06 21:19:00 · 43 阅读 · 0 评论 -
2021-05-04Leetcode36-37回溯问题
36.需要再做下标才是真正判断依据。 分配或者藏在了下标矩阵里。 初始状态一定要,下标有9这个数字,[9][10] i, j确实是列,[num]这里表示第几个??0-9一共十种情况?class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { int row[9][10] = {0}; int col[9][10] = {0};..原创 2021-05-04 23:10:17 · 153 阅读 · 0 评论 -
Leetcode241.96.95回溯和动态规划和递归分治-非人题
95.必须重做左边有多种情况,是一种vector的情况,右边呢,也是vector, 现场取i作为根节点。 什么时候退出呢??选择参数也只有start和end 竟然是vector<>直接输出?,这样左边可获得这么一个阵列。class Solution {public:vector<TreeNode*> ans; vector<TreeNode*> generateTrees(int n) { if(n == 0) return原创 2021-04-25 13:51:35 · 71 阅读 · 0 评论 -
Leetcode344,345,541
344.class Solution {public: void reverseString(vector<char>& s) { int l =0; int r = s.size()-1; while(l<r){//l==r只有一个不进行变化了 char tmp = s[l]; s[l]= s[r]; s[r] = tmp;原创 2021-04-23 00:19:47 · 46 阅读 · 0 评论 -
Leetcode283,27
283冒泡排序嘛class Solution {public: void moveZeroes(vector<int>& nums) { for(int i=0; i<nums.size(); i++){ for(int j=0; j<nums.size()-i-1; j++){ if(nums[j]==0) swap(nums[j], nums[j+1]);原创 2021-04-22 00:18:12 · 45 阅读 · 0 评论 -
Leetcode155,85,84
155.在这个排序的minStk中,注意下,它比stk永远多一个元素,那个初始化用到了,min(val, minStk.top()) minStk中如果按单调栈只存一个元素,pop不好解决,不如!!class MinStack {public: /** initialize your data structure here. */ stack<int> stk; stack<int> minStk; //这个辅助栈用于排序?? MinS原创 2021-04-21 09:20:30 · 54 阅读 · 0 评论 -
Leetcode84, 739
84以当前这个高度,最大的矩形面积。https://leetcode-cn.com/problems/largest-rectangle-in-histogram/solution/bao-li-jie-fa-zhan-by-liweiwei1419/单调栈问题??就是单调递增或是单调递减的栈。永远是有序的栈。如何让所有元素出栈, vector中添加一个不可能的-1, INT_MIN为空或入栈元素值小于栈顶元素值,则入栈;否则,如果入栈则会破坏栈的单调性,则需要把比入栈元素小的元素全部出原创 2021-04-20 09:21:30 · 72 阅读 · 0 评论 -
Leetcode13、90、78、717、89、10、14回溯子集和罗马数字
试的顺序一定是先从大的,一直试到小的 s = s.substr(), 前面必须有s=做接受才行。 while循环,第一个匹配不上,从大到小继续去匹配。 一直匹配大的数字,匹配到后来前面的大数不必匹配的class Solution {public: int romanToInt(string s) { int num[]={1000,900,500,400,100,90,50,40,10,9,5,4,1}; string temp[]={"M","CM"..原创 2021-04-18 11:31:57 · 257 阅读 · 0 评论 -
Leetcode树与遍历
要注意先放右边的,再放左边的stk出来的时候才是正确的顺序。左边的弄完了,才到右边去。一次进两个,却只出去一个。虽然只出去一个,但排好了序的?把它pop掉的同时,孩子们也被放进去了。后序遍历234.满指针走一步,快指针走两步。206.链表反转注意cur让它一直连在链表上,而tmp代表它所在这一个点。字典树208.212.意识yi意思是next建立一个同它大小的吗?请问这C语言中%X的意思是以十六进制数形式输出整数...原创 2021-04-16 23:56:05 · 39 阅读 · 0 评论 -
Leetcode 211同208
Leetcode 211同208Hello, 在线做笔记开始正则中点的处理??字典树?以a开头的,其他单词有好多个。判断单词在不在里面。必须定义一个节点,遍里遍历特征:查找或插入一个长度为 L 的单词,访问 next 数组的次数最多为 L+1,和 Trie 中包含多少个单词无关一次建树,多次查询。memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。void *memset(void *s, int ch原创 2021-04-08 22:33:40 · 70 阅读 · 0 评论 -
Leetcode6和12
index++ 或者--的问题,反序有奇偶数 || flage = true或false两种解决方案 %(size-1)因为下标从0开始,-1是不错的 两种特殊情况单独出来return了去。前面class Solution {public: string convert(string s, int numRows) { int n = s.size(); string ans; if(n<= numRows || numRows==..原创 2021-04-16 23:53:39 · 43 阅读 · 0 评论