Menu Sidebar
Menu

Archive: October 28, 2015

Binary Tree Longest Consecutive Sequence

给一个binary tree, 问你怎么找其中最长的连续递增的path. 1 \ 3 / \ 2 4 \ 5 这个返回3. 解法很简单, 和找数组最大连续递增的子序列一样. private int result = Integer.MIN_VALUE; public int longestConsecutive(TreeNode root) { if(root == null) return 0; dfs(root, 0, root); return result; } private void dfs(TreeNode root, int cur, TreeNode pre) { if(root == null) return; if(root.val == pre.val+1) cur++; else cur […]

Palindrome Permutation

给一个string, 问你,它的字符随便排序是否能组成一个回文? 能成为回文的话,需要有偶数个字符, 但是其中某个可以是奇数. 偶数比如 ababcc -> abccba 奇数比如 ababccd -> abcdbca 所以就做个count[]数组, 数一下其中的每个字符个数, 然后设置一个counter, 记得是否有奇数个. public boolean canPermutePalindrome(String s) { int[] A = new int[256]; int count=0; for(int i=0; i<s.length(); i++){ if(A[s.charAt(i)]>0) { A[s.charAt(i)]–; count–; } else { A[s.charAt(i)]++; count++; } } return count<=1; }  

Nim Game

尼姆博奕, 给一个堆, 能拿无数个, 玩家先拿, 谁没的拿了就算输. 这个不是普通的尼姆博弈,  因为最大能拿3个, 所以答案就是只需要判断堆中的元素个数是不是能整除4就, 如果能, 就是玩家输, 如果不能, 就有可能赢. public boolean canWinNim(int n) { return n%4 != 0; }  

书脊

这青苔碧瓦堆, 俺曾睡风流觉, 将五十年兴亡看饱.

October 2015
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031