随笔分类 -  LeetCode

上一页 1 2 3 4 5 6 7 ··· 12 下一页
摘要:一、题目 1、审题 2、分析 求二叉树中 p、q 节点的最小共同祖先节点。 二、解答 1、思路 方法一、 采用循环查找。 ①、若 root 为 p 或者 q ,则返回 root ②、若 p、q 分布在 root 不同的左右子树,则返回 root ③、若 p、q 均为 root 左子树,则 root 阅读全文
posted @ 2018-11-10 14:28 skillking2 阅读(147) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 给出一棵二叉查找树中的两个节点,求出这两个节点的最小共同祖先。 二、解答 1、思路 方法一、 当 p、q 中的一个是 root 节点时,或者 p、q 一个为root 左子树节点,一个为右子树节点,则 root 才是 他们的共同最小祖先。 方法二、 p、q一个为左孩子、一 阅读全文
posted @ 2018-11-09 16:53 skillking2 阅读(143) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、判断链表中的节点结构是否是回文形式。 二、解答 1、思路 ①、采用两个指针 fast、slow向后移动,最终 slow 移动到了中间的位置(可能右边节点数多 1 个) ②、将 slow 右边的所有节点进行翻转,最终 slow 指向右端的起始节点,fast 指向 head ③、 阅读全文
posted @ 2018-11-09 16:09 skillking2 阅读(113) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 使用栈来实现队列的功能。 二、解答 1、思路 方法一、 只修改 Pop 方法,使得栈中元素排序为队列的规则。 方法二、 使用两个 Stack,input、output。 push: 压入 input 栈。 pop、peek: 若 output 不为空,则对 output 阅读全文
posted @ 2018-11-08 17:32 skillking2 阅读(105) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 判断给出的数值是否为 2 的幂次方。 二、解答 1、思路 方法一、 采用 n & (n-1)每次消掉 n 最右边一个 1 的特点。而 2 的幂次方的二进制形式都是只包含一个 1. eg:2、4、8、16、、、 方法二、 正整数中,2 的幂次方最大为 2 << 30。 判 阅读全文
posted @ 2018-11-08 17:01 skillking2 阅读(102) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 给出一棵二分查找树,求出其中第 k 小的节点数值。 二、解答 1、思路 方法一、 使用 Stack 进行中序遍历。若常访问,则可以采用一个 List 存储。 方法二、 采用二分查找。 ①、先统计左子树长度 m,若 k < m + 1,则要查找的元素在左子树中。 ②、若 阅读全文
posted @ 2018-11-08 11:43 skillking2 阅读(145) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 给出一个整形数组,统计其中元素出现次数超过数组长度 1/3 的元素。 二、解答 1、思路 方法一、 采用一个 Map 统计元素出现的次数。 方法二、 Boyer-Moore majority vote algorithm(摩尔投票算法) 这是一种在线性时间O(n)和空间 阅读全文
posted @ 2018-11-07 21:19 skillking2 阅读(106) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 给出一个有序的无重复的整形数组,返回一个描述数组‘概要’的字符串 List。 二、解答 1、思路 方法一、 采用两个指针记录前后的元素是否连续。 方法二、 直接以当前元素为每一个组合的起始,求出每一个组合。 阅读全文
posted @ 2018-11-07 20:21 skillking2 阅读(119) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 给出包含 +、-、*、/ 以及空格、数字的正确的数学计算式,求出其正确答案。 二、解答 1、思路 新建一个栈,存放所有的带符号的数值,其中 出现 +、- 号时作为下一个数值的符号; 当出现 * / 号时,从栈中出栈一个数值与下一个数值进行运算后入栈。 最终将栈中所有数值 阅读全文
posted @ 2018-11-07 17:16 skillking2 阅读(130) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 给出字符串表示的包含有 +、-、( 、) 运算符以及空格、数字的整形运算,求出其结果。 二、解答 1、思路 循环遍历 S 中的字符 c: ①、当 c == 数字:将与其相邻的数字组合成整数。 ②、当 c == ‘+’ : 前一个操作数输入完毕,开始新的运算,且为加法运算 阅读全文
posted @ 2018-11-07 15:47 skillking2 阅读(121) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 求一棵完全二叉树的节点个数。 二、解答 1、思路 方法一、 将二叉树将 root 节点分为左右两颗子树。 ①、若右子树的高度 小于 左子树的高度,则此完全二叉树的最后一个节点落于 左子树,则右子树是一棵高度为 h - 2 的完全二叉树; 节点数等于 1 << h - 2 阅读全文
posted @ 2018-11-05 21:32 skillking2 阅读(111) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 给出二维空间中两个矩形的坐标,求这两个矩阵的总面积。(注意重叠部分) 二、解答 1、思路 首先计算两个矩阵s1, s2 的面积,在计算重叠部分的面积。 重叠部分,可能是 s1 与 s2 的包含关系,或者部分包含、或者矩阵 s1 为一个点。 阅读全文
posted @ 2018-11-05 16:44 skillking2 阅读(95) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 求出只包含字符 0 、 1 的二维矩阵中的 1 形成的最大正方形的面积 二、解答 1、思路: 方法一、 动态规划,采用二维数组 dp[][],dp[i][j] 表示在位置 [i][j] 作为右下角顶点所形成的正方形的最大边长。 动态规划方程为: if(matrix[i] 阅读全文
posted @ 2018-11-04 20:55 skillking2 阅读(175) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 判断数组中是否存在两个元素之差在 t 之内,且此两个元素下标之差在 k 之内。 二、解答 1、思路: 方法一、 桶排序 ①、采用 Map ,key 记录桶的序号,value 记录元素的值。每个桶的元素个数为 t + 1, eg t=3,则桶大小为 4, 元素 0、1、2 阅读全文
posted @ 2018-11-03 22:23 skillking2 阅读(134) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 判断数组中是否存在两个值相同的元素,下标之差 <= k 二、解答 1、思路: 使用 Set 将数组的前 k 个元素添加入 Set,若有添加失败情况,则返回 true; 之后每次将 set 中的前面第 i - k - 1 个元素从 Set 中去除,并添加入新的元素,若添加 阅读全文
posted @ 2018-11-03 21:22 skillking2 阅读(86) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 判断一个数组中是否有重复的元素 二、解答 1、思路: 方法一、 先排序,在判断 方法二、 使用优先队列 PriorityQueue 对数组进行排序 方法三、 使用选择排序对数组进行排序,在判断。 注意: 为了提高选择排序的效率(即避免基本有序时的最坏情况),可以先对数组 阅读全文
posted @ 2018-11-03 21:21 skillking2 阅读(87) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 给出数值 k 代表可以使用 1~9 中的 k 个不同数字,n 代表这 k 个数字的和。求所有符合的组合。 二、解答 1、思路: 采用 DFS 阅读全文
posted @ 2018-11-02 11:19 skillking2 阅读(140) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 在一个无序的整形数组中找出第 K 大的元素。 二、解答 1、思路: 方法一、 排序后直接返回。 方法二、采用 PriorityQueue PriorityQueue 对进入的元素进行排序,每次出队的都是最小的元素; 方法三、 1、对数组采用快速排序,确定第一个元素在有序 阅读全文
posted @ 2018-11-01 22:06 skillking2 阅读(119) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 给出一个字符串,在此字符串前边添加字符,使得其成为一个回文,求添加最少字符后,所形成的回文。 二、解答 1、思路: 方法一、 ①、为了处理回文字符数为奇数和偶数的问题,先在字符串 s 的每一个字符之间插入字符 '#',并将每个字符放入一个 List 中 ②、下标 ind 阅读全文
posted @ 2018-10-31 22:50 skillking2 阅读(147) 评论(0) 推荐(0) 编辑
摘要:一、题目 1、审题 2、分析 一个连续的数组,你能获取不连续的元素值代表的财富,数组首尾的两个元素算作连续,求能获得的最大财富值。 二、解答 1、思路: 在 198. House Robber 的基础上添加了首尾不能连续的条件。 故,可以采用破坏圈的方法,即获取的元素范围为 [0, len - 2] 阅读全文
posted @ 2018-10-31 21:47 skillking2 阅读(414) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 ··· 12 下一页