首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
算法刷题记录
九极天
创建于2024-03-14
订阅专栏
算法刷题记录
暂无订阅
共47篇文章
创建于2024-03-14
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
杨辉三角形
杨辉三角 思路 一: 找到规则,下一行由上一行的结果决定 输入为 n,则生成 n 行 优化:杨辉三角形每一行是个对称结构,算一半即可 可否直接推出某一行的值 思路二:使用递归迭代,后一行依赖于上一行
路径总和
思路一: 暴力方法,穷举所有路径,判断和是否相等,如果遇到相等的,返回 true 。。。 思路二: 两条路径有相同的父路径时,可以共用父路径的值 。。。 思路三: 递归 从根节点 a 到叶子节点,存在
二叉树的最小深度
二叉树的最小深度 思路: 最小深度=左子树的最小深度、右子树的最小深度的最小值 注意,叶子节点必须是左、右子树都为 nil 的节点 空节点不算
平衡二叉树
思路: 递归,判断树是否平衡二叉树即左子树、右子树都是平衡二叉树 夭折 递归的方式不对,应该以获取树的高度函数递归 树的高度返回值代表两种含义,可以提前阻断执行。
将有序数组转换为二叉搜索树
思路: 中间节点作为根节点,左边作为左子树,右边作为右子树 每个节点都这样操作,采用递归思路: 中间节点作为根节点,左边作为左子树,右边作为右子树 每个节点都这样操作,采用递归
二叉树的最大深度
二叉树的最大深度 思路:递归思想,最简单 方法二,树的层序遍历二叉树的最大深度 思路:递归思想,最简单 方法二,树的层序遍历
对称二叉树
递归左、右节点,秒了 关键 A B 节点值相等,且 A.左=B.右,且 A.右=B.左递归左、右节点,秒了 关键 A B 节点值相等,且 A.左=B.右,且 A.右=B.左
相同的树
思路:递归即可思路:递归即可思路:递归即可思路:递归即可思路:递归即可思路:递归即可思路:递归即可思路:递归即可思路:递归即可
合并两个有序数组
解法一:在一个循环中遍历两个数组,每次取最小的 解法二:逆向思维,为了匹配题目中的只在第一个数组上应用更改,可以从末尾开始匹配
删除排序链表的重复元素
删除排序链表中的重复元素 思路: 遍历链表,用一个指针指向当前节点的上一个节点,遇到重复节点时,上一个节点指向当前节点的下一个节点 遍历链表,创建一个新链表,记录元素,不重复就添加 我上面的这两种方法
爬楼梯
思路: 2x+y=n,求 x,y 可能的种类 方法一:递归,爬到第 n 阶台阶的种类=爬到第 n-1 阶台阶的种类+爬到第 n-2 阶台阶的种类 超出时间限制 在递归解法中,例如计算斐波那契数列,每个
二分查找应用:求x的平方根
思路: 暴力解法:从 0 开始逐步递增,求平方,找到相等或者比他小的最大值,就找到了平方根 二分查找
二进制求和
思路 转数值,再相加,但是貌似更麻烦 直接定义一个字符相加的函数,本来想用传统的末尾相加的思路,发现写起来很麻烦 伪代码 优化 不用判断长度谁大谁小 不用想着先转换位某种表示,在转换为二进制字符串。直
加一
思路:最后一位+1,>9 则只加余数,前一位+整数思路:最后一位+1,>9 则只加余数,前一位+整数
最后一个单词的长度
思路: 从右往左找,找到第一个不是空格的,记录下标,再找到第二个不是空格的记录下标,即可思路: 从右往左找,找到第一个不是空格的,记录下标,再找到第二个不是空格的记录下标,即可
二分查找:搜索插入位置
思路: 二分查找思路: 二分查找思路: 二分查找思路: 二分查找思路: 二分查找思路: 二分查找思路: 二分查找
找出字符串中第一个匹配项的下标
暴力解法 自己实现 startWith 函数 优化 根本不需要 startWith,直接切片判断是否相等 这个可以用 KMP 算法,但是比较复杂,先不考虑
移除元素
思路: 遍历,当遇到目标元素时,末尾的元素向前移,末尾元素标记为已使用,移动到当前目标元素位置 这个也是双指针法,一个指向当前元素,另一个指向末尾元素。这个速度更快,不需要遍历到末尾 这个写法可以简化
删除有序数组中的重复项
思路: 用两个指针,一个指向当前不重复的最大值,一个指向扫描的最新位置。术语叫,“快慢指针法”。。。
合并K个有序链表
方法一:水平扫描法 将合并 k 个有序链表看为多个合并两个有序链表 方法二:分治法 分治法在合并k个升序链表时通常比水平扫描方法更快。分治法通过递归地将k个链表分为两半,然后合并,这样减少了重复比较的
下一页