網頁

2022/9/13

LeetCode 217. Contains Duplicate

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前面排名的解法皆同上,應該是沒更加解。

沒有留言:

張貼留言