今日去面試,被問到要求手寫一段代碼,實現去除數組中重複的元素。我的第一反應是用 Set,因爲 Set中的元素是不能重複的,但是大叔又說不讓用 Set。明明感覺很簡單的一個算法題,但是最後也沒能寫的讓人滿意。
於是回來總結了以下兩種方法來實現:
1. 利用 List 的 contains() 方法:
package com.czq.text; import java.util.ArrayList; import java.util.List; public class RemoveSameNum2 { public static void main(String[] args) { int[] attr = { 1, 2, 3, 3, 5, 5, 7, 9 }; List<Integer> list = new ArrayList<Integer>(); for (int i : attr) { if (!list.contains(i)) {//boolean contains(Object o):如果列表包含指定的元素,則返回 true list.add(i); } } System.out.println(list); } }
2. 使用 Set 接口:
package com.czq.text;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class RemoveSameNum {
public static void main(String[] args) {
int[] attr = { 1, 2, 3, 3, 5, 5, 7, 9 };
List<Integer> list = new ArrayList<Integer>();
for (int i : attr) {
list.add(i);
}
Set<Integer> set = new HashSet<Integer>();
set.addAll(list);
System.out.println(set);
}
}
經過測試,以上兩種方法均能正確輸出:
[1, 2, 3, 5, 7, 9]