我在下面编写了一个示例代码,以在无序列表中找到缺少的数字。例如{5,2,3}应返回{1,4}。我的问题是,是否使用HashMap来快速查看正确?范围是1和输入列表中的最大数量。在无序列表中查找缺少的数字
public List<Integer> findMissing(List<Integer> numbers) {
int max = 0;
List<Integer> result = new ArrayList<Integer>();
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
for(Integer num : numbers) {
if(num > max)
max=num;
map.put(num,num);
}
int missingCount=max-numbers.size();
for(int i=1;i<=max;i++) {
if(missingCount == 0) break;
if(!map.containsKey(i)) {
result.add(i);
missingCount--;
}
}
return result;
}
定义_missing_。那么0呢?那6点呢?那么24123123呢?这是一个范围吗? –
你知道列表的范围吗? – jpganz18
在你的代码中,如果第一个数字是0,其余的都是坏的。 – jpganz18