1. 程式人生 > 其它 >2.判斷陣列是否存在重複元素

2.判斷陣列是否存在重複元素

判斷陣列是否存在重複元素
/*

給定一個整數陣列,判斷是否存在重複元素。
如果存在一值在陣列中出現至少兩次,函式返回 true 。如果陣列中每個元素都不相同,則返回 false 。
示例 1:
輸入: [1,2,3,1]
輸出: true
示例 2:
輸入: [1,2,3,4]
輸出: false
示例 3:
輸入: [1,1,1,3,3,4,3,2,4,2]
輸出: true
*/
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class RepeatElements {
    
public static void main(String[] args) { int[] nums={3,1,2,6,8,5,4,6}; long start = System.currentTimeMillis(); boolean b = containsDuplicate(nums); long end = System.currentTimeMillis(); System.out.println("解"+b+"---時間:"+(end-start)+"ms"); } public static
boolean containsDuplicate(int[] nums) { Map<Integer,Integer> map=new HashMap<Integer,Integer>(); for (int i = 0; i < nums.length; i++) { if (map.containsKey(nums[i])){ return true; } map.put(nums[i],nums[i]); }
return false; } public static boolean containsDuplicate2(int[] nums) { Set<Integer> set = new HashSet<Integer>(); for (int x : nums) { if (!set.add(x)) { return true; } } return false; } }

方法一:這個不難理解每次迴圈都將陣列元素存放到map裡面,然後通過map.containsKey()函式判斷map裡面是否存在與下標為i的元素相等的key。如果存在那麼我們返回true,退出迴圈。如果直到迴圈完成都沒有重複的元素那麼就返回false。

方法二:要知道hashset是不允許新增重複元素的,那麼我們每次都往HashSet裡面新增元素,如果新增函式返回false即為新增失敗,說明set集合中已經存在該元素,那麼我們就返回false。

兩種方法對比肯定方法二執行的更快一些,只做了新增操作,方法一不但執行了新增操作還有一個查詢的操作。

這樣問題就解決了,如果你們有更好的方法歡迎下方評論