摘要: 见过。所以就用XOR就行了。public class Solution { public int singleNumber(int[] A) { int a = A[0]; for (int i = 1; i < A.length; i++) { a ^= A[i]; } return a; }} 阅读全文
posted @ 2013-10-07 23:57 阿牧遥 阅读(198) 评论(0) 推荐(0)
摘要: Clone Graph,采用BFS,同时用一个Map记录原先节点和现在节点的映射,顺便可以用来做visited check。一开始有两个错误,一是null的时候也要返回null,二是有可能节点0也有指向0本身的邻居,所以在对neighbors做遍历前要先放到map里。public class Solution { HashMap map = new HashMap(); public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) { map.clear(); return cloneNo... 阅读全文
posted @ 2013-10-07 23:52 阿牧遥 阅读(655) 评论(0) 推荐(0)
摘要: 至此,终于把LeetCode Old OJ里的132题刷完了,小小的成就。此题算法简单,就是O(n^2),采用和Two Sum类似的做法就是了。我的代码略有麻烦之处,主要是在函数里判断了一次abs的差值,外面又判断了一次,但总体不影响。注意,先选定i,然后在i后面的元素做TwoSum,意思是当第一个元素是i时的结果,这样就不会重复。也有不需要子函数的写法,更简洁:http://www.cnblogs.com/graph/p/3343847.htmlpublic class Solution { public int threeSumClosest(int[] num, int targe... 阅读全文
posted @ 2013-10-07 22:48 阿牧遥 阅读(275) 评论(0) 推荐(0)
摘要: 这道题目仍然是二分,去掉不可能的部分。用了递归,在重复的情况下,就是有可能最左边的和最右边的相等,此时就不能直接判断出区间外的元素,左右两边同时递归。有重复元素的时候,在bad case的时候会退化为O(n)public class Solution { public boolean search(int[] A, int target) { return search(A, target, 0, A.length-1); } private boolean search(int[] A, int target, int left, int right)... 阅读全文
posted @ 2013-10-07 22:06 阿牧遥 阅读(164) 评论(0) 推荐(0)