数组中存放0到n中的缺少一个数的连续数,找出该缺少的数

数组中存放0到n中的缺少一个数的连续数,找出该缺少的数_第1张图片数组中存放0到n中的缺少一个数的连续数,找出该缺少的数_第2张图片数组中存放0到n中的缺少一个数的连续数,找出该缺少的数_第3张图片数组中存放0到n中的缺少一个数的连续数,找出该缺少的数_第4张图片

public int findMissing(ArrayList array)
{
/*
bit 0对应于LSB.以此为起点,逐步向较高的位推进
*/
return findMissing(array,0);
}
public int findMissing(ArrayList input,int column)
{
if(column>=BitInteger.INTEGER_SIZE)//终止条件或错误条件
{
return 0;
}
ArrayList oneBits=new ArrayList(input.size()/2);
ArrayList zeroBits=new ArrayList(input.size()/2);
for(BitInteger t:input)
{
if(t.fetch(column)==0)
{
zeroBits.add(t);
}
else
{
oneBits.add(t);
}
}
if(zeroBit.size()<=oneBits.size())
{
int v=findMissing(zeroBits,column+1);
return (v<<1)|0;
}
else
{
int v=findMissing(oneBits,column+1);
return (v<<1)|1;
}
}
 


你可能感兴趣的:(程序员面试金典第5版)