我在下面編寫了一個示例代碼,以在無序列表中找到缺少的數字。例如{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