217. Contains Duplicate

Leetcode 问题: 217. Contains Duplicate

题目

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.

给予一个整数阵列 nums,如果阵列中有任何整数重複出现 2 次以上,则回传 true,如果都是唯一值,则回传 false

Example

Input: nums = [1,2,3,1]
Output: true
Input: nums = [1,2,3,4]
Output: false
Input: nums = [1,1,1,3,3,4,3,2,4,2]
Output: true

演算法

1. 建立储存唯一值的 Set

将没有出现过的资料都储存在这个 Set

2. 判断资料在 Set 有没有出现过

若资料在 Set 有出现过,则表示这个数字阵列 nums有重複的整数,不需要再检查,直接回传 true

如果都没有找到重複的资料,再回传 false

答案

JavaScript

function containsDuplicate(numsList) {
    // 建立储存唯一值的 Set
    var numsSets = new Set();
    // 预设没有包含重複的数字
    var isContainDuplicateNumber = false;
    for (var i = 0; i < numsList.length; i++) {
        // 目前的数字
        var currentNumber = numsList[i];
        if (numsSets.has(currentNumber)) {
            // 如果目前的数字已经出现过,表示包含重複的数字,跳开不用再检查了
            isContainDuplicateNumber = true;
            break;
        }
        // 将不重複的数字加入 Set
        numsSets.add(currentNumber);
    }
    return isContainDuplicateNumber;
}

TypeScript

function containsDuplicate(numsList: number[]): boolean {
    // 建立储存唯一值的 Set
    const numsSets = new Set();
    // 预设没有包含重複的数字
    let isContainDuplicateNumber = false;

    for (let i = 0; i < numsList.length; i++) {
        // 目前的数字
        let currentNumber = numsList[i];

        if (numsSets.has(currentNumber)) {
            // 如果目前的数字已经出现过,表示包含重複的数字,跳开不用再检查了
            isContainDuplicateNumber = true;
            break;
        }

        // 将不重複的数字加入 Set
        numsSets.add(currentNumber);
    }

    return isContainDuplicateNumber;
};

参考资料