Easy題。給一陣列若有任一元素重複返回true,反之返回false。
題目
Given an integer array nums
, return true
if any value appears at least twice in the array, and return false
if every element is distinct.
Example 1:
Input: nums = [1,2,3,1]
Output: true
Example 2:
Input: nums = [1,2,3,4]
Output: false
Example 3:
Input: nums = [1,1,1,3,3,4,3,2,4,2]
Output: true
先想到的解法
做過幾次陣列的題目後可直覺想到用Set
來檢查陣列中是否有重複元素。用廽圈遍歷陣列元素並呼叫Set.add(E e)
新增元素,若該元素存在集合(if Set.add(E e)
return false)中返回true。一個廽圈時間複雜度O(n);一個可能裝載全陣列元素的Set則空間複雜度為O(n)。
Main.java
package com.abc.demo;
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] arges) {
System.out.println(containsDuplicate(new int[]{1, 2, 3, 1})); // true
System.out.println(containsDuplicate(new int[]{1, 2, 3, 4})); // false
}
public static boolean containsDuplicate(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int i = 0; i < nums.length; i++) {
if (!set.add(nums[i])) {
return true;
}
}
return false;
}
}
看LeetCode前面排名的解法皆同上,應該是沒更加解。
沒有留言:
張貼留言