二个排序好的数组怎么找出他们的交集?
二路并归发,实现代码
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;
}