算法记录
禾几头
这个作者很懒,什么都没留下…
展开
-
算法秘籍之二叉树的迭代与递归遍历无缝切换
看完之后二叉树的递归与迭代遍历自由切换原创 2023-04-11 10:14:33 · 96 阅读 · 0 评论 -
【力扣474 动态规划】为什么求解时需要逆序
这个题类似于背包问题,其中列表中的每个字符串可看作包含zeronum个0,onenum个1,且价值为1的商品,此时的求解换一种理解方式就是,给定可装m个0和n个1的背包,求可以把列表中的哪些字符串装入背包,保证zeronum的值<=m,onenum的值<=n。解题代码都大同小异,但是有个问题不易理解,就是在求dp表时,为什么需要使用逆序求值class Solution: def findMaxForm(self, strs: List[str], m: int, n: int) -.原创 2021-02-03 14:13:48 · 443 阅读 · 1 评论 -
小白解堆排序(附代码和详细注释)
堆排序(附代码和注释)堆排序就是使用完全二叉树的逻辑结构来对数据进行排序,理解堆排序主要理解三个部分内容什么是完全二叉树,堆在逻辑结构上是一种怎样的完全二叉树堆元素的添加堆元素的删除什么是完全二叉树,堆在逻辑结构上是一种怎样的完全二叉树通俗来讲,完全二叉树就是在二叉树添加结点时完全按照从左到右的顺序添加结点的二叉树。上图为完全二叉树,下图先添加右边结点所以不是堆分为大根堆和小根堆,本文以小根堆为例,小根堆即二叉树中所有结点的值都小于子结点的值,大根堆则反之。要构造小根堆就得理解,原创 2020-10-07 10:39:34 · 216 阅读 · 0 评论 -
二叉树中序遍历三种方式(递归,迭代,莫里斯遍历)
二叉树中序遍历三种方式递归遍历迭代遍历莫里斯遍历树的定义# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = None递归遍历class Solution: def inorderTraversal(self, root:原创 2020-09-12 16:58:24 · 280 阅读 · 0 评论 -
动态规划判断子序列
动态规划判断子序列给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例 1:s = “abc”, t = “ahbgdc”返回 true.示例 2:s = “axc”原创 2020-08-25 10:16:25 · 544 阅读 · 0 评论 -
C++双指针解字符串反转
力扣:557.c++双指针解字符串反转给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例1:输入: “Let’s take LeetCode contest”输出: “s’teL ekat edoCteeL tsetnoc”class Solution {public: string reverseWords(string s) { int len = s.size(); int left = 0,right = 0;原创 2020-08-16 09:46:00 · 375 阅读 · 0 评论