![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
leetcode
NULL001100
量变引起质变
展开
-
代码随想录算法训练营第9天|栈与队列2
【代码】代码随想录算法训练营第9天|栈与队列2。原创 2023-02-11 22:44:35 · 112 阅读 · 0 评论 -
代码随想录算法训练营第9天|栈与队列1
【代码】代码随想录算法训练营第9天|栈与队列1。原创 2023-02-10 23:55:13 · 116 阅读 · 0 评论 -
代码随想录算法训练营第8天|字符串
自己写的,用了substr,额外申请了空间。原地处理字符串方法:局部翻转,整体翻转。原创 2023-02-09 00:04:12 · 131 阅读 · 0 评论 -
代码随想录算法训练营第7天
【代码】代码随想录算法训练营第7天。原创 2023-02-07 23:11:50 · 63 阅读 · 0 评论 -
代码随想录算法训练营第6天
拉链法:发生冲突的元素存储到链表里。关键:哈希表的大小,太大?太小,易发生冲突,链表上的元素多,查找时间长。线性探测法:冲突位置的下一个放元素。原创 2023-02-06 23:50:23 · 238 阅读 · 0 评论 -
代码随想录算法训练营第4天
当前结点指向2,2指向1,1指向3。原创 2023-02-05 01:28:19 · 370 阅读 · 0 评论 -
代码随想录算法训练营第3天
建立一个虚拟头结点,指向头结点,两种操作就可以和在一起了。分为头结点和不是头结点两种操作。val,指针,构造函数。原创 2023-02-04 00:40:10 · 53 阅读 · 0 评论 -
代码随想录算法训练营第2天
设置好几个需要用到的变量:循环次数,每次循环一条边的边上数的个数,每次循环的起始位置,考虑n的奇偶性。本题,从左往右,从上至下,从右往左,从下到上,顺序是不变的。模拟,用到了二分法的循环不变量思想(什么在变,什么不变)原创 2023-02-03 01:10:10 · 183 阅读 · 0 评论 -
代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
【代码】代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。原创 2023-02-01 23:43:14 · 81 阅读 · 0 评论 -
【LeetCode】96. 不同的二叉搜索树 DP
不同的二叉搜索树题目描述解题思路代码题目描述题目链接:96. 不同的二叉搜索树解题思路动态规划。看的官方题解。如果是直接想动态转移方程的话不太容易,但是像题解里面推出式子来就比较好理解了。定义两个函数:G(n): 长度为 n 的序列能构成的不同二叉搜索树的个数。F(i, n): 以 i 为根、序列长度为 n 的不同二叉搜索树个数(1≤i≤n)。代码class Solution {public: int numTrees(int n) { vector&原创 2020-08-24 18:20:30 · 84 阅读 · 0 评论 -
【LeetCode】338. 比特位计数(DP)
比特位计数一级目录二级目录代码一级目录二级目录代码class Solution {public: vector<int> countBits(int num) { vector<int> dp(num+1); dp[0]=0; for(int i=0;i<=num;i++) if(i%2!=0) dp[i]=dp[i-1]+1; else dp[i]=dp[i/2]原创 2020-08-20 23:10:36 · 110 阅读 · 0 评论 -
【LeetCode】300. 最长上升子序列(DP)
最长上升子序列题目描述解题思路代码题目描述给定一个无序的整数数组,找到其中最长上升子序列的长度。(注意:子序列可以不连续,子串要连续)例如:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。解题思路动态规划。动态规划主要就是要找准状态和状态转移。本题的状态显然可以是上升子序列的最大长度。状态转移就是:首先定位到我所要求的dp[i]位置上,在i之前比较(即j<i) 如果nums[i]>nums[原创 2020-08-20 22:36:27 · 116 阅读 · 0 评论 -
211. 添加与搜索单词 - 数据结构设计(leetcode)
添加与搜索单词题目描述解题思路代码题目描述题目链接:211. 添加与搜索单词 - 数据结构设计(leetcode)设计一个支持以下两种操作的数据结构:void addWord(word)bool search(word)search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 . 或 a-z 。 . 可以表示任何一个字母。解题思路主要是利用字典树。字典树的基本学习可以做这道题:208. 实现 Trie (前缀树)。理解了基本字典树的思想后再做这道题其实就是关于通配符的处原创 2020-08-13 19:51:34 · 137 阅读 · 0 评论 -
235. 二叉搜索树的最近公共祖先(leetcode)
二叉搜索树的最近公共祖先题目描述解题思路代码题目描述题目链接:二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例:1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6 解释: 节点 2 和节点 8 的最近公共原创 2020-08-08 16:40:01 · 109 阅读 · 0 评论 -
116、117填充每个节点的下一个右侧节点指针I、II(leetcode)
填充每个节点的下一个右侧节点指针题目描述解题思路完美二叉树二叉树代码完美二叉树二叉树题目描述题目链接:116 117116和117题目类似,都是要填充每个结点的 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。(初始状态下,所有 next 指针都被设置为 NULL。)例:所不同的是116为完美二叉树,而117为普通二叉树。解题思路刚看题目描述,肯定是不太清楚是什么意思。其实就是二叉树的每个结点定义时就有一个next指针,我原创 2020-08-05 12:49:58 · 129 阅读 · 0 评论 -
二叉树遍历(非递归解法)一个模板解决三种遍历
二叉树遍历(非递归解法)用同一个模板解决三种递归。附理解和代码原创 2020-08-02 19:22:12 · 207 阅读 · 0 评论 -
二叉树遍历(递归解法)
二叉树遍历(递归解法)思想加代码原创 2020-08-02 13:53:33 · 200 阅读 · 1 评论 -
387. 字符串中的第一个唯一字符(leetcode)
字符串中的第一个唯一字符题目描述解题思路代码题目描述给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。s = “leetcode”返回 0s = “loveleetcode”返回 2解题思路只需判断字符串的最前面的位置和最后面的位置是否相等即可,是,则返回位置,不是,则继续遍历,遍历结束仍没有找到则返回-1。运用find和rfind函数,分别从前往后和从后往前查找。代码class Solution {public: int firstU原创 2020-07-30 11:35:24 · 88 阅读 · 0 评论 -
206. 反转链表(leetcode)
反转链表题目描述解题思路代码题目描述题目链接:反转链表主要题目就是反转链表:例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解题思路用的是迭代法。这个的一个特点就是往链表头部添加元素,天然具有倒序的特点。所以按照输入顺序直接添加元素,那么输出就是倒序。代码思路就是:先保存next结点。如果先执行的话,就会丢失next结点修改next,指向新链表修改pre为已添加的结点原创 2020-07-27 19:27:00 · 84 阅读 · 0 评论 -
198. 打家劫舍(leetcode)
打家劫舍题目描述解题思路代码题目描述题目链接:198. 打家劫舍(leetcode)主要就是求数组和的最大值,要求每个数组的值不能相邻。示例 :输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。解题思路动态规划。分析这个问题可由两部分组成,偷前k-1间房子,最后一间不偷;偷前k-2间房子和最后一间。因此,状态转移方程为:还要注意:在写递推关系的时候,要注意写上 k=0和原创 2020-07-22 17:00:12 · 72 阅读 · 0 评论 -
119. 杨辉三角 II(leetcode)
杨辉三角 II题目描述解题思路代码题目描述题目链接: 杨辉三角 II给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。示例:输入: 3输出: [1,3,3,1]解题思路运用了动态规划思想。总的来说就是利用杨辉三角形后一行与前一行的关系。更新过程为:从倒数第二个元素开始往前更新。它等于原来这个位置的数 + 前一个位置的数行[i] = 行[i] + 行[i-1]代码class Solution {public: vector<int> getR原创 2020-07-15 16:52:03 · 63 阅读 · 0 评论 -
102. 二叉树的层序遍历 107.二叉树的层次遍历 II(leetcode)
102.给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]107.给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15原创 2020-07-12 18:15:01 · 137 阅读 · 0 评论 -
53. 最大子序和(leetcode) 动态规划、贪心解法、分治解法
最大子序和题目描述解法动态规划贪心分治题目描述题目链接:53. 最大子序和(leetcode) 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解法这道题解法较多。暴力法就是将所有可能的连续数组的和都求出来,然后取最大值,研究意义不大,所以就不详细写暴力了。主要研究了一下动态规划、贪心、分治。动态规划原创 2020-07-08 14:55:57 · 162 阅读 · 0 评论