经典算法题

二个排序好的数组怎么找出他们的交集?

二路并归发,实现代码
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;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值