会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
約束の空
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
12
13
14
15
16
17
18
19
20
···
22
下一页
2018年8月26日
LeetCode 114. Flatten Binary Tree to Linked List
摘要: Recursive 一开始我想用preorder加上prev指针来做,但是很快就发现了问题。由于preorder,root先处理,而在本题中,即先将root加到之前的prev之后。假如树是 (1 (2) (3)),dfs到节点2时,prev->right=root 会使得1的右儿子变成2,这会使得节
阅读全文
posted @ 2018-08-26 00:05 約束の空
阅读(217)
评论(0)
推荐(0)
2018年8月25日
LeetCode 109. Convert Sorted List to Binary Search Tree
摘要: 和 148. Sort List 一样的思路,需要把链表一分为二,利用快慢指针即可。 需要注意的是,写完一定要 两个节点 三个节点 代入几个 test case 检查一下,非常容易出错。下面做法是把最后slow的位置作为 root,递归左半边和右半边。 时间复杂度 O(nlogn) 空间复杂度 O(
阅读全文
posted @ 2018-08-25 23:17 約束の空
阅读(122)
评论(0)
推荐(0)
LeetCode 264. Ugly Number II
摘要: 第一想法是建立一个足够大的bool数组,i遍历,如果nums[i]是ugly num,那么 2*nums[i] 3*nums[i] 5*nums[i] 一定也是 ugly num。最后遍历一遍找到第n个,但是这样空间会超,不行。 继续这个思路,可以利用一个优先队列,重复元素直接过掉,可以AC。但是时
阅读全文
posted @ 2018-08-25 11:16 約束の空
阅读(95)
评论(0)
推荐(0)
LeetCode 338. Counting Bits
摘要: 方法一:pop count 利用 191. The number of 1 bits 中的方法,算是bit manipulation 中的巧妙操作,每次 n = n&(n-1) 把最低位的 1 置为 0 。 时间复杂度 O(nk),k表示数字中1的位数。 方法二:DP DP方法有很多,如 dp[i]
阅读全文
posted @ 2018-08-25 08:08 約束の空
阅读(90)
评论(0)
推荐(0)
LeetCode 96. Unique Binary Search Trees
摘要: 这道题和树基本没什么关系,完全就是 Catalan Number。 给定一个数 i , 1作为根,左边有 0 个节点,右边有 i-1 个节点 2作为根,左边有 1 个节点,右边有 i-2 个节点 ... i 作为根,左边有 i-1 个节点,右边有 0 个节点 记 dp[i] 为给定 i 时的个数,d
阅读全文
posted @ 2018-08-25 06:36 約束の空
阅读(80)
评论(0)
推荐(0)
LeetCode 669. Trim a Binary Search Tree
摘要: 二叉查找树的套路一般都是 先根据 root->val 和一些条件缩小范围。 本题中,如果 根节点小于L,递归右子树,如果大于R,递归左子树。如果在两者之间,表明root一定是符合要求的,递归左子树和右子树,并和root接起来。 时间复杂度 O(n),最多访问每个节点一次。 空间复杂度 O(h) 递归
阅读全文
posted @ 2018-08-25 05:06 約束の空
阅读(78)
评论(0)
推荐(0)
LeetCode 236. Lowest Common Ancestor of a Binary Tree; 235. Lowest Common Ancestor of a Binary Search Tree
摘要: 236. Lowest Common Ancestor of a Binary Tree 递归寻找p或q,如果找到,层层向上返回,知道 root 左边和右边都不为NULL:if (left!=NULL && right!=NULL) return root; 时间复杂度 O(n),空间复杂度 O(H
阅读全文
posted @ 2018-08-25 04:16 約束の空
阅读(95)
评论(0)
推荐(0)
LeetCode 110. Balanced Binary Tree
摘要: 二叉树的问题,这里主要关心一下时间复杂度。 先回忆一下求二叉树深度的问题,T(n) = 2T(n/2)+1 -> O(n) 本题 T(n) = 2T(n/2) + O(n) -> O(nlogn) 最坏情况是O(n^2) 可以继续优化,一旦发现子树不是平衡的,返回-1,最后只要判断 f(root)!
阅读全文
posted @ 2018-08-25 03:16 約束の空
阅读(104)
评论(0)
推荐(0)
LeetCode 205. Isomorphic Strings; 290. Word Pattern; 890. Find and Replace Pattern
摘要: 这几道题都是pattern的题目, Isomorphic Strings 和 Word Pattern 是完全一样的问题,Find and Replace Pattern 本质也一样。 第一种思路,建立两个map,将字符(或字符串)映射到所在的位置 i+1,每次只需要判断 map1[a]==map2
阅读全文
posted @ 2018-08-25 01:06 約束の空
阅读(129)
评论(0)
推荐(0)
2018年8月24日
LeetCode 426. Convert Binary Search Tree to Sorted Doubly Linked List
摘要: 看起来很难,但是仔细想一下,实质就是二叉树的中序遍历的问题,中序遍历有递归和非递归(至少两种写法)。 递归: 非递归 Divide and Conquer 思路和中序遍历很类似,但是代码写起来有一点不一样。感觉这种方法思路更加清晰。
阅读全文
posted @ 2018-08-24 23:43 約束の空
阅读(1379)
评论(0)
推荐(0)
上一页
1
···
12
13
14
15
16
17
18
19
20
···
22
下一页
公告