随笔分类 - 算法虐我千百遍.lintcode
lintcode题集
摘要:直接硬搜就可以了,只是需要考虑k为0的情况。 题目来源: http://www.lintcode.com/zh-cn/problem/digit-counts/#
阅读全文
摘要:这些一次遍历搞定的,套路无非都是在遍历的时候就记录数据的状态,然后根据遍历到的当前的数据的状态来修改最终结果,当遍历完了的时候结果也就确定了。 题目来源: http://www.lintcode.com/zh-cn/problem/longest-words/
阅读全文
摘要:简单粗暴 题目来源: http://www.lintcode.com/zh-cn/problem/check-sum-of-square-numbers/
阅读全文
摘要:直接使用递归的方法会导致TLE,加个缓存就好了: 或者使用迭代法: 题目来源: http://www.lintcode.com/zh-cn/problem/fibonacci/
阅读全文
摘要:使用标记的方式,先遍历一遍B,出现一次就记录一次出现次数,然后遍历A,将记录的B的出现次数消去,最后检查一下记录的标记位是不是都消去了,总共需要检查三次,即进行三次O(n)的遍历。 然后总结出规律如果A的字符长度小于B的字符长度时,A不可能完全包含B,所以做一个优化处理,先检查一下长度,如果能够确定
阅读全文
摘要:思路: 最简单的方法,依次遍历比较就可以了。 AC代码:/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * t...
阅读全文
摘要:使用一个Map维护数字出现的次数,使用一个链表维护只出现一次的数,使用一个变量记录是否找到过终止数字。 AC代码:public class Solution { /* * @param : a continuous stream of numbers * @param : a number * @return: returns the fir...
阅读全文
摘要:分治问题,可以把整棵树看做是由一颗颗只有三个节点组成的小树,一颗树的构成是根节点、左子树、右子树,这样只需要从左子树找出一个最大的节点,从右子树找出一个最大的节点,然后与根节点三个取个最大的,就是最终的结果了。 AC代码:/** * Definition of TreeNode: * public class TreeNode { * public int val; * ...
阅读全文
摘要:输入的n可以分为两种情况: 1. 如果n是3的倍数的话,不论A怎么拿B都可以拿(3-A拿的个数)来使其保持是3的倍数,他就一定能拿到最后一块,所以n是3的倍数的话B必胜 2. 如果n不是3的倍数的话,那么A就能够拿1或者2块使其变为3的倍数,就相当于B变成了第一种情况中的A,所以n不是3的倍数的话A必胜 AC代码:class Solution: """ @param: ...
阅读全文
摘要:使用两个栈来回倒腾可以实现队列。 AC代码: 题目来源: http://www.lintcode.com/zh-cn/problem/implement-queue-by-two-stacks/
阅读全文
摘要:AC代码: 题目来源: http://www.lintcode.com/zh-cn/problem/binary-tree-preorder-traversal/
阅读全文
摘要:在v2ex上看到有人提到了这个,感觉挺简单的,没忍住还是试一下.... 基本的染色法。 AC代码: 题目来源: http://www.lintcode.com/zh-cn/problem/number-of-islands/
阅读全文
摘要:AC代码: 题目来源: http://www.lintcode.com/zh-cn/problem/insert-node-in-a-binary-search-tree/
阅读全文
摘要:Moore's voting algorithm算法:从一个集合中找出出现次数半数以上的元素,每次从集合中去掉一对不同的数,当剩下一个元素的时候(事实上只要满足一个元素出现过半就一定会剩下一个元素的)这个元素就是我们要找的数了。 AC代码: 题目来源: http://www.lintcode.com
阅读全文
摘要:最开始的想法是先计算出链表的长度length,然后再从头走 length-n 步即是需要的位置了。 AC代码: 然后神奇的快慢指针出场打脸了... 两个指针间距n(慢指针+n=快指针),当快指针到达尾部的时候慢指针所处的位置就是我们需要的啦。 AC代码: 题目来源: http://www.lintc
阅读全文
摘要:因为字符究竟是什么样的无法确定(比如编码之类的),恐怕是没办法假设使用多大空间(位、数组)来标记出现次数的,集合应该可以但感觉会严重拖慢速度... 还是只做出了O(n^2)... 勉强AC代码: 题目来源: http://www.lintcode.com/zh-cn/problem/unique-c
阅读全文
摘要:递归那么好为什么不用递归啊...我才不会被你骗...(其实是因为用惯了递归啰嗦的循环反倒不会写了...o(╯□╰)o) AC代码: 题目来源: http://www.lintcode.com/zh-cn/problem/invert-binary-tree/
阅读全文
摘要:AC代码: 题目来源: http://www.lintcode.com/zh-cn/problem/delete-node-in-the-middle-of-singly-linked-list/
阅读全文
摘要:AC代码: 题目来源: http://www.lintcode.com/zh-cn/problem/identical-binary-tree/
阅读全文
摘要:水题 AC代码: 题目来源: http://www.lintcode.com/zh-cn/problem/clone-binary-tree/#
阅读全文