Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
剑指 Offer 18. 删除链表的节点 -- 双指针
0 题目描述 leetcode原题链接 剑指 Offer 18 删除链表的节点 1 双指针解法 删除值为 val 的节点分需为两步 定位节点 修改引用 定位节点 遍历链表 直到 head val val 时跳出 即可定位目标节点 修改引用
剑指offer
算法模型
链表
LeetCode
算法
Leetcode 括号的分数 -- 栈
题目描述 leetcode 856 括号的分数 给定一个平衡括号字符串 S 按下述规则计算该字符串的分数 得 1 分 AB 得 A B 分 其中 A 和 B 是平衡括号字符串 A 得 2 A 分 其中 A 是平衡括号字符串 示例 1 输入
算法模型
python
算法
数据结构
LeetCode
剑指 Offer 27. 二叉树的镜像 -- 递归
0 题目描述 leetcode原题链接 剑指 Offer 27 二叉树的镜像 1 递归算法 根据二叉树镜像的定义 考虑递归遍历 d f s mathrm dfs dfs 二叉树 交换每个节点的左 右子节点 即可生成 二叉树的镜像 递归解析
剑指offer
算法模型
二叉树
数据结构
面试
堆排序(Heapsort)-- 高级排序算法
1 堆排序 Heapsort 堆排序 Heapsort 是指利用堆这种数据结构所设计的一种排序算法 二叉堆本质上是一种完全二叉树 它分为两个类型 最大堆和最小堆 最大堆任何一个父节点的值 都大于等于它左右孩子节点的值 最小堆任何一个父节点的
算法模型
数据结构
排序算法
堆排序
python
Leetcode[数组] 分发饼干 -- 贪心算法
0 题目描述 leetcode原题链接 分发饼干 1 预排序 双指针 利用贪心算法的思想 每次都先满足胃口最小的孩子 直到有效饼干分完 或者小胃口孩子都被满足则停止分发 class Solution def findContentChild
算法模型
算法
贪心算法
数据结构
LeetCode
Leetcode[数组] 买卖股票的最佳时机 -- 动态规划
0 题目描述 leetcode原题链接 买卖股票的最佳时机 1 动态规划 假设给定的数组为 7 1 5 3 6 4 如果我们在图表上绘制给定数组中的数字 我们将会得到 我们来假设自己来购买股票 随着时间的推移 每天我们都可以选择出售股票与否
算法模型
数据结构
动态规划
LeetCode
算法
剑指 Offer 28. 对称的二叉树 -- 递归
0 题目描述 leetcode原题链接 剑指 Offer 28 对称的二叉树 1 递归解法 对称二叉树定义 对于树中 任意两个对称节点 L L L 和 R R R 一定有
算法模型
剑指offer
二叉树
算法
面试
基数排序(Radix Sort)-- 特殊排序算法
1 基数排序 Radix Sort 基数排序是按照低位先排序 然后收集 再按照高位排序 然后再收集 依次类推 直到最高位 有时候有些属性是有优先级顺序的 先按低优先级排序 再按高优先级排序 最后的次序就是高优先级高的在前 高优先级相同的低优
算法模型
排序算法
数据结构
基数排序
python
Leetcode 计算质数 -- 埃氏筛、线性筛解析
0 题目描述 leetcode原题链接 204 计数质数 1 埃氏筛 很直观的思路是我们枚举每个数判断其是不是质数 枚举没有考虑到数与数的关联性 因此难以再继续优化时间复杂度 介绍一个常见的算法 该算法由希腊数学家厄拉多塞 Eratosth
算法模型
算法
LeetCode
质数
埃氏筛
Leetcode 环形链表 -- 快慢指针
0 题目描述 leetcode原题链接 环形链表 最容易想到的是哈希表解法 遍历所有节点 每次遍历到一个节点时 判断该节点此前是否被访问过 但是空间复杂度为 O n O n O n 有以下更优的解法实现空间复杂度为
算法模型
链表
LeetCode
快慢指针
龟兔赛跑
剑指 Offer 07. 重建二叉树 -- 递归
0 题目描述 leetcode原题链接 剑指 Offer 07 重建二叉树 1 递归解法 二叉树前序遍历的顺序为 先遍历根节点 随后递归地遍历左子树 最后递归地遍历右子树 二叉树中序遍历的顺序为 先递归地遍历左子树 随后遍历根节点 最后递归
剑指offer
算法模型
二叉树
LeetCode
面试
插入排序(Insertion-Sort)-- 初级排序算法
1 插入排序 Insertion Sort 插入排序 Insertion Sort 的算法描述是一种简单直观的排序算法 它的工作原理是通过构建有序序列 对于未排序数据 在已排序序列中从后向前扫描 找到相应位置并插入 算法描述 一般来说 插入
算法模型
数据结构
排序算法
插入排序
python
Leetcode[链表] 反转链表 -- 双指针法
0 题目描述 leetcode原题链接 反转链表 1 双指针法 定义两个指针 pre 和 cur pre 在前 cur 在后 每次让 pre 的 next 指向 cur 实现一次局部反转 局部反转完成之后 pre 和 cur 同时往前移动一
算法模型
链表
双指针
LeetCode
反转链表
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 -- 递归
0 题目描述 leetcode原题链接 剑指 Offer 68 I 二叉搜索树的最近公共祖先 1 递归解法 终止条件 当 root 为空时 返回 None 当 p q 都在 root 的右子树中 则开启递归 root right 并返回 否
算法模型
剑指offer
二叉树
数据结构
LeetCode
Leetcode[数组] 三数之和 -- 双指针法
0 题目描述 leetcode原题链接 三数之和 1 排序 双指针解法 class Solution def threeSum self nums List int gt List List int n len nums if not nu
算法模型
LeetCode
数据结构
算法
面试
Leetcode[数组] 买卖股票的最佳时机 II - 贪心算法
0 题目描述 leetcode原题链接 买卖股票的最佳时机 II 1 贪心算法 class Solution def maxProfit self prices List int gt int maxprofit 0 for i in ra
算法模型
LeetCode
数据结构
贪心算法
面试
leectode 合并二叉树 -- 递归
0 题目描述 leetcode原题链接 617 合并二叉树 1 递归解法 可以使用深度优先搜索合并两个二叉树 从根节点开始同时遍历两个二叉树 并将对应的节点进行合并 两个二叉树的对应节点可能存在以下三种情况 对于每种情况使用不同的合并方式
算法模型
二叉树
数据结构
LeetCode
面试
剑指 Offer 16. 数值的整数次方 -- 快速幂
0 题目描述 leetcode原题 剑指 Offer 16 数值的整数次方 1 快速幂解法 快速幂实际上是二分思想的一种应用 二分推导 x n x n
算法模型
剑指offer
算法
LeetCode
数据结构
leetcode 路径总和 -- 递归
0 题目描述 leetcode原题链接 112 路径总和 1 递归解法 假定从根节点到当前节点的值之和为 val 我们可以将这个大问题转化为一个小问题 是否存在从当前节点的子节点到叶子的路径 满足其路径和为 sum val 不难发现这满足递
算法模型
数据结构
二叉树
LeetCode
面试
剑指 Offer 68 - II. 二叉树的最近公共祖先 -- 递归
0 题目描述 leetcode原题链接 剑指 Offer 68 II 二叉树的最近公共祖先 1 递归解法 代码思路 递归查询两个节点p q 如果某个节点等于节点p或节点q 则返回该节点的值给父节点 如果当前节点的左右子树分别包括p和q节点
剑指offer
算法模型
数据结构
二叉树
LeetCode
1
2
»