编程算法
斵冰且行
Given enough eyeballs, all bugs are shallow.
足够多的眼睛,就可以让问题浮现。
展开
-
Leetcode 233 - 数字 1 的个数
文章目录1. 暴力求解1.1 思路1.2 复杂度1.2.1 时间复杂度 O(nlogn)1.2.2 空间复杂度 O(1)1.3 代码2.3. 数学规律3.1 思路1.2 算法1. 暴力求解1.1 思路对任意一个正整数 m,通过不断地除法和取余运算,可以得到其包含的数字 1 的个数;遍历 [1, n] 内所有正整数,统计所有的数字 1 的个数,解题完毕。1.2 复杂度1.2.1 时间复杂度...原创 2019-08-13 22:36:12 · 373 阅读 · 0 评论 -
Leetcode 刷题
Leetcode 9. 回文数Leetcode 125. 验证回文串Leetcode 204. 计数质数Leetcode 206. 反转链表Leetcode 429. N叉树的层序遍历Leetcode 589. N叉树的前序遍历Leetcode 590. N叉树的后序遍历...原创 2019-09-06 14:36:19 · 153 阅读 · 0 评论 -
Leetcode 204. 计数质数
1. 暴力搜索2. 暴力搜索优化3. 厄拉多塞筛选4. 厄拉多塞筛选优化原创 2019-09-06 10:28:29 · 113 阅读 · 0 评论 -
Leetcode 回文数总结
1. 验证回文串2. 回文数原创 2019-09-05 17:15:42 · 207 阅读 · 0 评论 -
Leetcode 206. 反转链表
1. 数据结构2. 递归策略3. 迭代策略原创 2019-09-05 15:10:42 · 124 阅读 · 0 评论 -
Leetcode 160. 相交链表
《剑指 Offer》 52. 两个链表的第一个公共节点文章目录1. 辅助栈1.1 思路1.2 复杂度1.3 代码2. 双指针2.1 思路2.2 复杂度2.3 代码1. 辅助栈1.1 思路相交链表必成 Y 型,即头部分叉、尾部相同。因此,从尾部开始比对,直到找到最后一个相同的节点,即为链表的第一个公共节点。利用辅助栈,将链表倒置,实现倒序比较。以空间换时间,在空间复杂度上还可以进一步优...原创 2019-08-22 22:18:11 · 137 阅读 · 0 评论 -
Leetcode 18. 四数之和
文章目录1. 对撞指针1.1 思路1.2 复杂度1.3 代码1. 对撞指针1.1 思路和三数之和思路完全一样,使用两个循环固定前两个数,用碰撞指针找到满足题解的另外两个数。1.2 复杂度时间复杂度:O(n^3)空间复杂度:O(1)1.3 代码class Solution { public List<List<Integer>> fourSum(int...原创 2019-08-15 17:27:54 · 106 阅读 · 0 评论 -
Leetcode 15. 三数之和
文章目录1. 对撞指针1.1 思路1.2 复杂度1.3 代码1. 对撞指针1.1 思路首先对数组排序,时间复杂度 O(nlogn)。大多数避免重复的问题,解决策略都是排序,即对结果施加人为顺序约束。外层循环,从左向右遍历数组,选定三元组中的第一个数(也是三元组中的最小值)。此处存在两个剪枝:如果最小值大于零,则不可能找到另外两个更大的数,使三数之和为零,直接结束外层循环;避免重复:如...原创 2019-08-15 16:54:19 · 292 阅读 · 0 评论 -
Leetcode 1. 两数之和
文章目录1. 哈希表1.1 思路1.2 复杂度1.3 代码1. 哈希表1.1 思路在无序数组中,根据索引查找目标值的时间复杂度 O(1),根据目标值查找索引的时间复杂度 O(n)。使用哈希表建立目标值与索引的映射关系,以空间换时间,将查找时间从 O(n) 降低到 O(1)。可以采用两次遍历的方式,第一次建立哈希表,第二次查找整数对。注意,题目要求元素不能重复使用。由于输入数组中可能含有重复...原创 2019-08-15 14:55:02 · 116 阅读 · 0 评论 -
Leetcode 240. 搜索二维矩阵 II
文章目录1. 缩小查找范围1.1 思路1.2 复杂度1.3 代码《剑指 Offer》二维数组中的查找1. 缩小查找范围1.1 思路在该二维数组中,每行、列有序,但整体无序,不便于使用二分查找。我们发现,矩阵的右上角/左下角元素具有明显特征,这里以右上角为例:右上角是当前行的最大值,若目标值大于当前值,可排除该行,即向下查找;右上角是当前列的最小值,若目标值小于当前值,可排除该列...原创 2019-08-15 11:28:39 · 103 阅读 · 0 评论 -
Leetcode 74. 搜索二维矩阵
文章目录1. 降维后二分查找1.1 思路1.2 复杂度1.3 代码2. 两次二分查找2.1 思路2.2 复杂度2.3 代码1. 降维后二分查找1.1 思路将二维数组转化为一维数组,仍能保持有序,再使用标准的二分查找。二维数组与一维数组的映射关系如下:left = 0,right = m x n - 1;row = i / n,col = i % n。1.2 复杂度时间复杂度:O(...原创 2019-08-15 11:02:38 · 90 阅读 · 0 评论 -
Leetcode N叉树遍历方式总结
1. 数据结构2. 前序遍历3. 后序遍历4. 层序遍历原创 2019-08-19 16:48:02 · 353 阅读 · 0 评论 -
Leetcode 二叉树四种遍历方式总结
文章目录1. 前序遍历2. 中序遍历3. 后序遍历4. 层序遍历1. 前序遍历Leetcode 144. 二叉树的前序遍历递归实现:class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList...原创 2019-08-19 16:07:24 · 893 阅读 · 0 评论 -
Nowcoder 27. 二叉树的镜像
题目链接:https://www.nowcoder.com/practice/564f4c26aa584921bc75623e48ca3011对于每个非叶子节点,调换其左右子节点,即可实现二叉树的镜像翻转。本题考查二叉树遍历方式,采用前序、中序、后序和层次遍历均可实现上述操作,每种遍历都可以采用递归或者迭代策略实现。原创 2019-09-12 15:11:05 · 153 阅读 · 0 评论