• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






lazy pig~

青灯古佛,不见笑傲江湖...
 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

04 2021 档案

 
413 等差数列划分
摘要:dp[i] 表示以位置 i 为结尾的等差子数组个数 所以对于位置i+1处,其dp[i+1]与dp[i]的关系为dp[i]+1; 为什么要加1呢,比如dp[i]={(1,2,3,4),(2,3,4)}均为以4结尾的,然后现在i+1位置值为5,那么dp[i+1]可以为{(1,2,3,4,5),(2,3, 阅读全文
posted @ 2021-04-30 12:01 青衣怒马 阅读(71) 评论(0) 推荐(0)
198 打家劫舍 一维dp
摘要:dp[i]表示打劫到第i家时的最大收益,可以选择打劫或者不打劫,不打劫就是dp[i-1],打劫的话就是dp[i-2]+nums[i] 阅读全文
posted @ 2021-04-30 11:21 青衣怒马 阅读(46) 评论(0) 推荐(0)
32 最长有效括号 DP 栈模拟
摘要:注意题目的理解,这个有效子串里每个左括号都能找到对应的右括号就是有效的,不是说非要()()两两挨着 没想出来这种 状态定义方法 官方答案 注意dp是表示已下标i字符为结尾的有效字符串的长度,即下标i字符必须在有效字符串的结尾,而不是以i结尾的字符串的最大有效字符串长度。 1 class Soluti 阅读全文
posted @ 2021-04-29 12:28 青衣怒马 阅读(59) 评论(0) 推荐(0)
所有元音按顺序排不的最长子字符串 滑动窗口,聪明解法
摘要:滑动窗口: //滑动窗口 class Solution { public: int longestBeautifulSubstring(string word) { vector<char> window; unordered_set<char> cnt;//记录字符种类 int res = 0; 阅读全文
posted @ 2021-04-25 15:19 青衣怒马 阅读(74) 评论(0) 推荐(0)
5739 周赛 最高频元素的频数 滑动窗口双指针
摘要:排好序后用滑动窗口的思想。左标记从0开始,直到右标记无法再前进,此时让左标记前进,不断地调整框的大小,也在此过程中记录下框的大小 排序好一方面更容易获取最大值,而且也考虑了所有的可能。 class Solution { public: int maxFrequency(vector<int>& nu 阅读全文
posted @ 2021-04-25 14:52 青衣怒马 阅读(90) 评论(0) 推荐(0)
leetcode 5 最长回文子串 DP+中心扩散法
摘要://注意这种根据串长度来DP的思想,乍一看此题容易想到递推式,但如何实现,i,j的选取怎么定义,总不能胡乱选择i,j;所以定义好边界条件,长度为1的全为回文串,然后按照长度从2->n依次自底向上规划,当然此题也可以设计成递归自顶向下,最好再加个备忘录。 #include <iostream> #in 阅读全文
posted @ 2021-04-24 17:25 青衣怒马 阅读(97) 评论(0) 推荐(0)
leetcode 934 最短的桥 DFS+BFS
摘要:思路: 已经告知了是两个岛屿,所以先通过DFS找到其中一个岛并且给其标记,然后把其周围的0收起来,因为跟第二个岛如果隔开的话肯定是有0的,如果没0那就只有一个岛。然后对这一层的0进行广搜,也不断的进行标记,这层0完了以后再广搜下一层,直到找到下一个为1的就是岛屿了。 1 class Solution 阅读全文
posted @ 2021-04-21 16:38 青衣怒马 阅读(142) 评论(0) 推荐(0)
leetcode 72 编辑距离 DP
摘要:放一个精选题解 一定要考虑边界情况,二者均为空的情况,以及学习这种递推式的设计(到word1的i位置的字符串转为到word2的j位置的字符串这种关系的设计) 在i位置和j位置二者不一样时,对于替换删除和增加的理解: 因为是要把word1到i位置的字符串变成word2的字符串的j位置的字符串,所以最终 阅读全文
posted @ 2021-04-19 01:04 青衣怒马 阅读(74) 评论(0) 推荐(0)
leetcode 62不同路径 经典DP
摘要: 阅读全文
posted @ 2021-04-18 23:20 青衣怒马 阅读(40) 评论(0) 推荐(0)
leetcode 5736 周赛 单线程cpu 优先队列和排序
摘要:通过这个题熟悉了下iota的用法,vector自定义排序(根据另一个数组来排当前的数组) 优先队列对pair数据的处理方式,很好的一道题 1 class Solution { 2 public: 3 using PII = pair<int,int>;//type def 4 5 vector<in 阅读全文
posted @ 2021-04-18 18:30 青衣怒马 阅读(74) 评论(0) 推荐(0)
leetcode 96 不同的二叉搜索树 DP
摘要:官方题解解释太好了。自己咋就想不出来这递推式呢emmm 1 class Solution { 2 public: 3 int numTrees(int n) { 4 vector<int> G(n + 1, 0); 5 G[0] = 1; 6 G[1] = 1; 7 8 for (int i = 2 阅读全文
posted @ 2021-04-17 22:37 青衣怒马 阅读(30) 评论(0) 推荐(0)
leetcode 79单词搜索 记忆化搜素
摘要: 阅读全文
posted @ 2021-04-15 15:34 青衣怒马 阅读(34) 评论(0) 推荐(0)
leetcode 77 组合 给定数n和k,返回1.。n内所有K个数的组合
摘要:1 class Solution { 2 public: //递归 第一个位置分别为从1-n,对于每个值,后面的k-1个数再从后面的数里选剩下的k-1个数(子递归),等到第一个位置取到n-k的时候,剩下的k-1个正好是一种答案。 3 vector<vector<int>> combine(int n 阅读全文
posted @ 2021-04-14 21:54 青衣怒马 阅读(138) 评论(0) 推荐(0)
leetcode 46 全排列 回溯
摘要:最直观的想法就是 长度为n的数组 第一个位置有n个选择,第二个有n-1,第三个有n-2.....所有的为n! 可以用一个数组来记录,每次记录完后清空,但不如直接在原数组上操作 递归到深度为长度-1即可,因为倒数第二个安排好以后最后一个也没得选择了。 class Solution { public: 阅读全文
posted @ 2021-04-14 16:50 青衣怒马 阅读(58) 评论(0) 推荐(0)
leetcode 417 太平洋大西洋流水问题
摘要:类似于前面那道题,可以每个节点搜但是复杂度太高,还是从外到内 1 class Solution { 2 public: 3 vector<int> direction{-1, 0, 1, 0, -1}; 4 // 主函数 5 vector<vector<int>> pacificAtlantic(v 阅读全文
posted @ 2021-04-14 11:41 青衣怒马 阅读(46) 评论(0) 推荐(0)
leetcode 45 跳跃游戏Ⅱ 贪心
摘要:1.从后到前,每次找出到最后位置最远的位置(最好理解。。。)直到当前的最后位置就是0结束。每次找到一个就step++ 2.从前到后,每次找能跳的范围内的能跳的最远的位置。。。但是这种方法有个例子[10,9,8,7,6,5,4,3,2,1,1,0]这样就要跑好几次,,第一次选9,第二次选8.。。。。 阅读全文
posted @ 2021-04-10 15:28 青衣怒马 阅读(50) 评论(0) 推荐(0)
leetcode 122 买卖股票的最佳时机Ⅱ 贪心(每天买卖
摘要:每天买卖,这样更好理解,而且累加下来会取得最大值 1 class Solution { 2 public: 3 int maxProfit(vector<int>& prices) { 4 int res=0; 5 for(int i=0;i<prices.size()-1;i++) 6 { 7 i 阅读全文
posted @ 2021-04-10 12:00 青衣怒马 阅读(39) 评论(0) 推荐(0)
leetcode 135 分发糖果
摘要:每个人至少要有一个,每个人先给一个。从左到右扫一遍,左比右小则右加1,但此时如果左比右大并没有更新左,所以还需要从右到左走一次,如果左边的值比右边的大,但是左边的糖果却不比右边的多,就把左边的糖果更新为右边的加1. 1 class Solution { 2 public: 3 int candy(v 阅读全文
posted @ 2021-04-10 11:20 青衣怒马 阅读(58) 评论(0) 推荐(0)
leetcode 307 区域和检索 线段树(基本 无lazy)
摘要:1 class NumArray { 2 int MAXN; 3 int[] sum; 4 int[] arr; 5 6 public NumArray(int[] nums) { 7 this.arr = nums; 8 MAXN = nums.length << 2;//4倍空间 9 sum = 阅读全文
posted @ 2021-04-10 00:00 青衣怒马 阅读(48) 评论(0) 推荐(0)
208. 实现 Trie (前缀树)
摘要:思路比较简单 只是这种类用的不太习惯。。 插入就是看儿子的这个位置有没有,有就可以给计数加一下,没有就新建节点 插到最后一个字符就设置isend 查找就是一直往下走,如果走不动了就false,否则判断走到最后的isend 判断前缀更简单了,,一直判断就行,都不用判断最后的isend 1 class 阅读全文
posted @ 2021-04-07 15:48 青衣怒马 阅读(62) 评论(0) 推荐(0)
leetcode 329. 矩阵中的最长递增路径
摘要:/**^**/一开始写的朴素递归。。把max引用传进函数去,最后只返回一个max,但时间超时,虽然逻辑没问题。。看了题解emmm,明白了是备忘录递归法,但基于我这种原始代码改的还麻烦,之前返回void,备忘录的话得返回每个节点得值,好吧,直接贴官方代码。总是一看就懂。。。气死 1 class Sol 阅读全文
posted @ 2021-04-07 14:33 青衣怒马 阅读(59) 评论(0) 推荐(0)
leetcode 207. 课程表
摘要:判断有向无环图DAG 用拓扑排序 统计每个节点的入度数和他的邻接节点。然后将入度为0的节点入队列,每出一个就把他的邻接节点的入度数减一。每出一个就把节点数量减一,最后判断其是否为0 1 class Solution { 2 public: 3 bool canFinish(int numCourse 阅读全文
posted @ 2021-04-07 09:25 青衣怒马 阅读(74) 评论(0) 推荐(0)
23. 合并K个升序链表
摘要:每次从K个值中用最小堆来获取到K个值中的最小值 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode() : val(0), n 阅读全文
posted @ 2021-04-06 13:08 青衣怒马 阅读(51) 评论(0) 推荐(0)
leetcode 785 判断二分图
摘要:每次从一个未染色的节点出发,把与他相邻的未染色的节点染成相反的颜色,如果相邻节点已经被染色且颜色和他一致则返回false 全部染完且没报错则是二分图 另外主要注意非连通图的问题,需要多次从没染色的开始染色,防止出现某个子连通图不是二分图,二分图要求所有的连通图也全都是二分图 class Soluti 阅读全文
posted @ 2021-04-04 12:43 青衣怒马 阅读(58) 评论(0) 推荐(0)
leetcode 130. 被围绕的区域
摘要:DFS不一定每次都要从里到外,也可能从外到里 找出边界O然后找到与他相连的标记成A,别的O就是被包围的O。 1 class Solution { 2 public: 3 int n, m; 4 5 void dfs(vector<vector<char>>& board, int x, int y) 阅读全文
posted @ 2021-04-04 10:43 青衣怒马 阅读(42) 评论(0) 推荐(0)
129. 求根节点到叶节点数字之和
摘要:深搜,每下一层×10,直到到了叶节点才返回值, 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * T 阅读全文
posted @ 2021-04-01 00:59 青衣怒马 阅读(75) 评论(0) 推荐(0)