合集-代码随想录
代码随想录Day6
摘要:链表的复习章节 哈希的概念和应用:https://programmercarl.com/哈希表理论基础.html#哈希函数 当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。 数组 set (集合) map(映射) 这里数组就没啥可说的了,我们来看一下set。 Leetcode 2
阅读全文
代码随想录Day7|哈希表part02
摘要:今日任务 ● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结 详细布置 454.四数相加II 建议:本题是 使用map 巧妙解决的问题,好好体会一下 哈希法 如何提高程序执行效率,降低时间复杂度,当然使用哈希法 会提高空间复杂度,但一般来说我们都是舍
阅读全文
代码随想录Day8|字符串
摘要:主要是学了java的字符串用法,题目不是很难 使用 StringBuilder 类型可以节省时间,关于这个类型的添加和使用 char temp = sb.charAt(start); sb.setCharAt(start, sb.charAt(end)); sb.setCharAt(end, tem
阅读全文
代码随想录Day9|
摘要:28. 实现 strStr() 在一个串中查找是否出现过另一个串,这是KMP的看家本领 说到KMP,先说一下KMP这个名字是怎么来的,为什么叫做KMP呢。 因为是由这三位学者发明的:Knuth,Morris和Pratt,所以取了三位学者名字的首字母。所以叫做KMP KMP主要应用在字符串匹配上。 K
阅读全文
代码随想录Day10|栈与队列
摘要:那么我这里再列出四个关于栈的问题,大家可以思考一下。以下是以C++为例,使用其他编程语言的同学也对应思考一下,自己使用的编程语言里栈和队列是什么样的。 C++中stack 是容器么? 我们使用的stack是属于哪个版本的STL? 我们使用的STL中stack是如何实现的? stack 提供迭代器来遍
阅读全文
代码随想录Day11|栈和队列
摘要:20. 有效的括号 经典的利用栈的题目 这里选择用java来写,注意我们的java中的泛型不能用基本数据类型,而是应该使用包装类 注意!java一定是定义后需要声明,然后才能使用 1047. 删除字符串中的所有相邻重复项 略 比较简单 150. 逆波兰表达式求值 注意:leetcode 内置jdk的
阅读全文
代码随想录12|栈和队列
摘要:239. 滑动窗口最大值 这是使用单调队列的经典题目。 此时我们需要一个队列,这个队列呢,放进去窗口里的元素,然后随着窗口的移动,队列也一进一出,每次移动之后,队列告诉我们里面的最大值是什么。 每次窗口移动的时候,调用que.pop(滑动窗口中移除元素的数值),que.push(滑动窗口添加元素的数
阅读全文
代码随想录Day14|二叉树
摘要:基本理论 https://programmercarl.com/二叉树理论基础.html#二叉树的种类 满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。 完全二叉树:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并
阅读全文
代码随想录Day15|二叉树
摘要:二叉树层序遍历登场 层序遍历方式就是图论中的广度优先遍历,只不过我们应用在二叉树上。 果然看java还是很不爽,C++和python的代码简洁明了 public List<List<Integer>> resList = new ArrayList<List<Integer>>(); //DFS--
阅读全文
代码随想录Day15|二叉树III
摘要:104.二叉树的最大深度 递归法 本题可以使用前序(中左右),也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序求的是高度。 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始) 二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数
阅读全文
代码随想录算法训练营14期 Day1
摘要:数组理论基础 原文:https://github.com/youngyangyang04/leetcode-master/blob/master/problems/数组理论基础.md 704. 二分查找 解析链接:https://programmercarl.com/0704.二分查找.html#_
阅读全文
代码随想录训练营day2| leetcode977, 209,59
摘要:leetcode 977 题目:https://leetcode.com/problems/squares-of-a-sorted-array/description/ 解:https://programmercarl.com/0977.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%
阅读全文
代码随想录day16| 二叉树(四)
摘要:110.平衡二叉树 递归法 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeN
阅读全文
代码随想录Day17|二叉树(五)
摘要:今日任务 513.找树左下角的值 112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树 100.相同的树 572.另一个树的子树 513.找树左下角的值 层序遍历 /** * Definition for a binary tree
阅读全文
代码随想录Day19|二叉树(六)
摘要:今日任务 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树 654.最大二叉树 当不确定一个新的解决方案是否正确的时候 请优先使用暴力解的方式 /** * Definition for a binary tree node. * public class Tr
阅读全文
代码随想录|二叉树(最后一章)
摘要:530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 总结篇 53
阅读全文
代码随想录|二叉树总结
摘要:涉及到二叉树的构造,无论普通二叉树还是二叉搜索树一定前序,都是先构造中节点。 求普通二叉树的属性,一般是后序,一般要通过递归函数的返回值做计算。 求二叉搜索树的属性,一定是中序了,要不白瞎了有序性了。
阅读全文
代码随想录Day23|回溯算法
摘要:今日任务: 77. 组合 216.组合总和III 17.电话号码的字母组合 什么是回溯法 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 在二叉树系列中,我们已经不止一次,提到了回溯,例如二叉树:以为使用了递归,其实还隐藏着回溯 (opens new window)。 回溯是递归的副产品,只要有递
阅读全文
代码随想录Day24|回溯算法+JAVA大作战
摘要:今日任务 39. 组合总和 40.组合总和II 131.分割回文串 93.复原IP地址 78.子集 90.子集II 39. 组合总和 class Solution { List<List<Integer>> ans = new ArrayList<>(); LinkedList<Integer> n
阅读全文
代码随想录|回溯算法(终回)
摘要:* 491.递增子序列 * 46.全排列 * 47.全排列 II 332.重新安排行程 51. N皇后 37. 解数独 总结 491.递增子序列 注意使用set来判断这一层是否有用过相同的数字,因为这题的数不是order的,所以不能和前者相对比 在python中的set使用add来增加 class
阅读全文
代码随想录Day30|贪心1
摘要:理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和 什么是贪心 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 这么说有点抽象,来举一个例子: 例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿? 指定每次拿最大的,最终结果就是拿走最大数额的钱。
阅读全文
代码随想录Day32|贪心II
摘要:今日任务 ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II ● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果 122.买卖股票的最佳时机 II class Solution: def maxProfit(self, prices:
阅读全文
代码随想录|贪心III
摘要:860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球 860.柠檬水找零 class Solution: def lemonadeChange(self, bills: List[int]) -> bool: n1 = 0 #number of 5 n2 = 0 #numb
阅读全文
代码随想录|贪心(终章)
摘要:435. 无重叠区间 763.划分字母区间 56. 合并区间 738.单调递增的数字 968.监控二叉树 435. 无重叠区间 非常机智的算法 想要找到无重叠区间,想的是找到的是最合适留下来的区间 所以我们将按照区间的后段大小进行排序 将最在前的留下即可 真的非常机智 class Solution:
阅读全文
代码随想录|动态规划
摘要:理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 62.不同路径 63. 不同路径 II 343. 整数拆分 96.不同的二叉搜索树 动态规划理论基础 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。
阅读全文
代码随想录|动态规划-01背包问题
摘要:二维和一维01背包 416. 分割等和子集 1049. 最后一块石头的重量 II 494. 目标和 474.一和零 01 背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大
阅读全文
代码随想录|完全背包
摘要:完全背包 ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ ● 70. 爬楼梯 (进阶) ● 322. 零钱兑换 ● 279.完全平方数 ● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇! 完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weig
阅读全文
代码随想录|打家劫舍问题
摘要:198.打家劫舍 213.打家劫舍II 337.打家劫舍III 198.打家劫舍 class Solution: def rob(self, nums: List[int]) -> int: n = len(nums) if n == 0: return 0 dp = [0 for _ in ran
阅读全文
代码随想录|各种买卖股票问题
摘要:121. 买卖股票的最佳时机 122.买卖股票的最佳时机II 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费 总结 121. 买卖股票的最佳时机 全程只能买卖一次 贪心算法 这个算法的写法也非常有意思!左边小右边
阅读全文
代码随想录|动态规划 - 子序列系列
摘要:300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组 1143.最长公共子序列 1035.不相交的线 53. 最大子序和 动态规划 300.最长递增子序列 dp[i]:以nums[i]为尾的最大上升子序列 如果前面的nums[j]<nums[i] : dp[i] = max(
阅读全文
代码随想录|动态规划
摘要:392.判断子序列 115.不同的子序列 583. 两个字符串的删除操作 72. 编辑距离 编辑距离总结篇 392.判断子序列 和昨天的最长重复子串一样,只要计算两者的重复长度是不是和s一样就行了。但是还是不如双指针的时间复杂度 O(nm) O(nm) class Solution: def isS
阅读全文
代码随想录|动态规划-编辑距离
摘要:392.判断子序列 115.不同的子序列 583. 两个字符串的删除操作 72. 编辑距离 编辑距离总结篇 392.判断子序列 和昨天的最长重复子串一样,只要计算两者的重复长度是不是和s一样就行了。但是还是不如双指针的时间复杂度 O(nm) O(nm) class Solution: def isS
阅读全文
代码随想录|动态规划(终章)
摘要:647. 回文子串 516.最长回文子序列 动态规划总结篇 647. 回文子串 dp[i][j]为[i,j]是否为回文串 这里要注意的是我们的遍历顺序,不能是i一遍,j一遍这样,因为会包含后面的信息 所以我们这里选择的是先遍历长度,然后再遍历首字符 class Solution: def count
阅读全文
代码随想录|单调栈
摘要:● 739. 每日温度 ● 496.下一个更大元素 I 单调栈 那有同学就问了,我怎么能想到用单调栈呢? 什么时候用单调栈呢? 通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。时间复杂度为O(n)。 那么单调栈的原理是什么呢?为什么时间
阅读全文
浙公网安备 33010602011771号