随笔分类 -  ARTS

摘要:Algorithm: 643: Maximum Average Subarray I correct before optimize 先能正确的写出来,不要一开始想太多,比如这一题,因为思路简单,一开始就想着只用一个循环和如何精简合并分支条件,结果边界条件混乱,多次失败才过...当然,最后看答案这里 阅读全文
posted @ 2021-02-09 00:00 Jeff_p 阅读(737) 评论(0) 推荐(0)
摘要:Algorithm: 53: Maximum Subarray 对无后效性的理解:逻辑、条件和限制都要体现在某种设计的状态中,并且后续的状态都从前面已有状态中转换得出,不能依赖其他内容(如果依赖也要设计到状态中),已经有的状态不会被后面的状态所改变(后面的会用前面的但不会改变前面的),有时存在状态压 阅读全文
posted @ 2020-12-07 23:48 Jeff_p 阅读(96) 评论(0) 推荐(0)
摘要:Algorithm: 22: Generate Parentheses 39: Combination Sum 40: Combination Sum II 46: Permutations 47: Permutations II 328: Odd Even Linked List 本周集中精力多做 阅读全文
posted @ 2020-11-15 23:58 Jeff_p 阅读(91) 评论(0) 推荐(0)
摘要:Algorithm: 200: Number of Islands 547: Friend Circles 都可以使用 Flood Fill 算法,其中 DFS 最为直观,注意其中 visited 可以用布尔数组提高性能,此外 BFS 和 UnionFind 也可以,尤其是第二题使用 UnionFi 阅读全文
posted @ 2020-11-09 01:53 Jeff_p 阅读(94) 评论(0) 推荐(0)
摘要:Algorithm: 129: Sum Root to Leaf Numbers 463: Island Perimeter 都比较容易,注意第一题递归终止条件中只有当前节点是叶子结点才需要累加,避免重复计算。 Review: Fixing Linux filesystem performance 阅读全文
posted @ 2020-11-03 00:13 Jeff_p 阅读(69) 评论(0) 推荐(0)
摘要:Algorithm: 94: Binary Tree Inorder Traversal 530: Minimum Absolute Difference in BST 使用递归实现二叉树的前中后序遍历非常容易,进阶要求使用循环则麻烦一些,手动操作栈需要注意逻辑组织,官方题解更为简洁但是更难理解,需 阅读全文
posted @ 2020-10-26 08:38 Jeff_p 阅读(102) 评论(0) 推荐(0)
摘要:Algorithm: 622: Design Circular Queue 环形队列(Circular Queue,Ring Buffer)是一种性能更好的队列实现,相比链表对cpu缓存更加友好,相比一般数组队列避免了数据搬移。在实现的过程中需要两个pos,分别是生产者p1和消费者p2(具体p1是下 阅读全文
posted @ 2020-10-19 00:14 Jeff_p 阅读(119) 评论(0) 推荐(0)
摘要:Algorithm: 15: 3Sum (Medium) 18: 4Sum (Medium) 167: Two Sum II - Input array is sorted (Easy) 一开始直接尝试4Sum一直找不到思路,看了答案才明白原来就是在3Sum基础上再循环一次,确实是比较无趣的一题。相 阅读全文
posted @ 2020-10-12 00:00 Jeff_p 阅读(122) 评论(0) 推荐(0)
摘要:Algorithm: 117: Populating Next Right Pointers in Each Node II (Medium) 填充二叉树的各个节点的下一同层节点。这道题有个 Follow up:You may only use constant extra space. 我在开始一 阅读全文
posted @ 2020-10-04 23:45 Jeff_p 阅读(105) 评论(0) 推荐(0)
摘要:Algorithm: 538: Convert BST to Greater Tree (Easy) 利用BST的中序遍历可以排序这一特性,在遍历时先右后左就可以实现逆序,再累加即可。 int sum = 0; public TreeNode convertBST(TreeNode root) { 阅读全文
posted @ 2020-09-27 23:24 Jeff_p 阅读(147) 评论(0) 推荐(0)
摘要:Algorithm: 343: Integer Break (Medium) 求整数拆分后的最大乘积。首先动态规划解法,定义状态 dp[i] 是整数 i 拆分后乘积最大值,思考 dp[i] 和 dp[i-1] 关系并没有结果,换一个思路,取 j 是 i 最终拆出来的一个数,接下来有两种情况,第二个数 阅读全文
posted @ 2020-09-20 23:21 Jeff_p 阅读(143) 评论(0) 推荐(0)
摘要:Algorithm: 96: Unique Binary Search Trees (Medium) 这道题有几个关键点,1首先需要充分理解 BST 二叉搜索树,左子树都小于、右子树都大于当前节点,因此每确定一个根节点,其种类数可以固定计算,等于左子树种类数乘以右子树种类数。2抽象和推导出递归公式, 阅读全文
posted @ 2020-07-19 15:18 Jeff_p 阅读(167) 评论(0) 推荐(0)
摘要:Algorithm: 225: Implement Stack using Queues (Easy) 232: Implement Queue using Stacks (Easy) 栈和队列互相表达虽然很简单,但是有多种办法,比如使用队列时的双队列、单队列、操作头部、操作尾部、peek优化等,最 阅读全文
posted @ 2020-07-12 17:34 Jeff_p 阅读(136) 评论(0) 推荐(0)
摘要:Algorithm: 70: Climbing Stairs (Easy) 167: Two Sum II - Input array is sorted (Easy) 120: Triangle (Medium) 经典动态规划,状态转移方程是自底向上,row[i] = row[i] + min(p 阅读全文
posted @ 2020-07-05 16:26 Jeff_p 阅读(148) 评论(0) 推荐(0)
摘要:目标明确的一周。 Algorithm: 451:Sort Characters By Frequency (Medium) 比较平淡的一道题,就是扫描一遍统计频率,再按频率拍序,最后按频率输出。有几个方面的小技巧,1统计频率时除了用 map 外,还可以用数组,因为内容只有字母,2 排序时可以用桶排序 阅读全文
posted @ 2020-06-28 00:31 Jeff_p 阅读(87) 评论(0) 推荐(0)
摘要:拨云见日的一周。 Algorithm: 104:Maximum Depth of Binary Tree(Easy) 树的很多问题首先考虑遍历,几种前中后序遍历只是打印时机不同,实际都是一样的 DFS,此外 DFS 也可以不用递归,手动使用栈结构模拟,最后还可以使用 BFS,借助 queue 优先处 阅读全文
posted @ 2020-06-20 23:31 Jeff_p 阅读(170) 评论(0) 推荐(0)
摘要:10-10-5 的一周。 Algorithm: 435:Non-overlapping Intervals (Medium) 贪心算法,重点是如何使每一次选择对随后更有利。对所有区间按起点排序,从前到后两两比较,如果不相交都保留,pre和i指针向后,如果相交要决策去掉哪个,要去掉右边界占用更少的那个 阅读全文
posted @ 2020-06-14 21:07 Jeff_p 阅读(166) 评论(0) 推荐(0)
摘要:需要抓紧时间的一周。 Algorithm: 215:Kth Largest Element in an Array (Medium) 这道题求第 k 大元素,类似于 top k,可以使用堆 heap,这里需要注意虽然逻辑上需要一个大小为 k 的小顶堆,但是实际上有个技巧是让它可以放下 k + 1 个 阅读全文
posted @ 2020-06-06 12:07 Jeff_p 阅读(221) 评论(0) 推荐(0)
摘要:ARTS 是左耳朵耗子发起的一项打卡活动,每个人每周至少一个 Algorithm,Review 一篇英文文章,总结一个工作中的技术 Tip,以及 Share 一个传递价值观的东西。我非常认同这些行为的价值,决定参与,计划坚持至少一年,看看能带来什么改变。这是第一周内容,花了不少时间,但是它至少解决了 阅读全文
posted @ 2020-05-31 08:13 Jeff_p 阅读(374) 评论(0) 推荐(0)