2Sigma OA prepare: Longest Chain】的更多相关文章

DP use HashMap: 根据string的长度sort,然后维护每个string的longest chain,default为1,如果删除某个char生成的string能提供更长的chain,则更新 package twoSigma; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.lang.StringBuilder; public class Lon…
DFS & BFS: 关键在于构造graph package twoSigma; import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedList; import java.util.Queue; public class FriendCircle1 { ArrayList<ArrayList<Integer>> graph; public int friendCircles(…
give a string, all 1 or 0, we can flip a 0 to 1, find the longest 1 substring after the flipping 这是一个简单版本of LC 424 Longest Repeating Character Replacement 又是Window, 又是Two Pointers Window还是采用每次都try to update left使得window valid, 每次都检查最大window package G…
准备T家OA,网上看的面经 最直接的方法,从target降到1,如果是奇数就减一,偶数就除2 public static void main(String[] args) { int a = shortest(17); System.out.println(a); } public static int shortest(int target) { if (target < 1) { return -1; } int count = 1; while (target != 1) { if (ta…
题目链接: here 题意: 和hdu4742类似.差别就是一部分三元组是直接给出的.另一部分是用他给的那个函数生成的.还有就是这里的大于是严格的大于a>b必须ax>bx,ay>by,az>bz. 思路: 思路也和hdu4742here类似. 仅仅是有几个比較棘手的问题.如今变成严格大于了.对于y还是非常好办的.我们在排序y的时候能够使的标号大的排在前面这样就能够防止y和它一样的更新它了.感觉比較麻烦的是x一样怎么办.这个真没想出什么好办法.就仅仅有x和mid+1的x不一样的建一个…
思路:无非就是扫描一遍记录奇数和偶数各自的个数,比如为M和N,然后就是奇数里面选两个.偶数里面选两个,答案就是M(M-1)/2 + N(N-1)/2…
2sum的夹逼算法,需要sort一下.本身不难,但是tricky的地方在于允许同一个数组元素自己跟自己组成一个pair,比如上例中的[5, 5].而且数组本身就允许值相等的元素存在,在计算pair时,算成不同的pair,比如数组是[3,3],K=6,这时的pair有[0, 0], [0, 1], [1, 0], [1, 1]4个. 这个case让这道本来不难的题一下子麻烦了许多.我的对应处理方法是:用HashMap记录每个元素出现次数,用一个变量res记录可行pair数. 像夹逼方法那样,一左一…
Algorithm: Count the number of occurrence of each character. Only one character with odd occurrence is allowed since in a palindrome maximum number of character with odd occurrence can be '1'. All other character should occur in even number of times.…
分析:就是建立一个boolean array来记录array里面每个元素的访问情况,遇到访问过的元素就停止visiting,返回未访问的结点个数 public int visiting(int[] A, int N) { if (A==null || A.length==0) return 0; int cur = 0; int count = 0; boolean[] visited = new boolean[N]; while (cur>=0 && cur<A.lengt…
In mathematics, a rational number is any number that can be expressed in the form of a fraction p/q , where p & q are two integers, and the denominator q is not equal to zero. Hence, all integers are rational numbers where denominator, in the most re…