二个排序好的数组怎么找出他们的交集?
二路并归发,实现代码 int[] array1={1,3,5,7,9}; int[] array2={3,6,9}; List<Integer> result = new ArratList<>(); int index1=0,index2=0; while(index1<array1.length && index2<array2.length){ int tem1 = array1[index1]; int tem2 = arrat2[index2]; if(tem1==tem2){ result.add(tem1); index1++; index2++; } if(tem1>tem2 && index2 < array2.length){ index2++; } if(tem1<tem2 && index1 < array1.length){ index1++; } }微信抢红包怎么保证每个人抢到的金额机会均等?
线程分隔法,总额一定,进行N-1次分隔,获得N个区间,则每人一份, 保证每人不管先抢后抢获得的金额机会均等 int money = 100; //总金额 int people=5; //总人数 int minute = money *100; //获取分 Random rand = new Random(); List<Integer> point = new ArrayList<>(); for(int i=0;i<people -1;i++) { point.add(rand.nextInt(minute)); } Collections.sort(point); //排序 //打印每份金额 int all=0; for(int i=0;i<point.size();i++) { int item = point.get(i)-all; System.out.println("第"+(i+1)+"个人获得"+item/100.0+"元"); all+=item; } System.out.println("第"+people+"个人获得"+(minute-all)/100.0+"元");给定一个包含N个整数的数组nums找出数组中任意三个元素(a,b,c)使得a+b+c=0? 找出所有条件且不重复的三元组
int[] numbs = {-1,0,1,2,-2,-4}; Arrays.sort(numbs); for(int i=0 ;i<numbs.length;i++) { int a = numbs[i]; int j = i+1; int k = numbs.length -1; while(j<k) { int sum = a + numbs[j] + numbs[k]; if(sum<0) { j++; }else if(sum>0) { k--; }else { System.out.println(a+"+"+numbs[j]+"+"+numbs[k]+"="+0); j++; k--; } } }二叉树最大距离
public int getLen(Node root,int len){ if(root==null) return len; len=len+1; int left=getLen(root.left,len); int right=getLen(root.right,len); return left>right?left:right; }