JavaScript LeetCode에 중복 포함

소개



LeetCode의 문제를 계속 진행합니다. 임의로 질문을 선택하지 않습니다. 궁금하신 분들을 위해 다음 목록을 따라갑니다.

techinterviewhandbook.org/best-practice-que..

즉각적인



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.



예 1:

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


언뜻 보기에 문제는 매우 간단해 보입니다. 여기서 아이디어는 배열을 반복하고 중복 항목을 찾는 것입니다. 여기에 JavaScript와 함께 사용할 수 있는 약간의 치트 코드가 있습니다.

첫 번째 솔루션(속임수)



Set이라는 JavaScript용 표준 내장 개체가 있습니다.

하지만 이 개체는 무엇을 합니까?

Set objects are collections of values. You can iterate through the elements of a set in insertion order. A value in the Set may only occur once; it is unique in the Set's collection.



이것을 알면 우리가 해야 할 유일한 일은 배열을 Set로 변환하고 그 길이를 원래 숫자 배열 길이와 비교하는 것입니다.

var containsDuplicate = function(nums) {
    const set = new Set([...nums]);
    return set.size != nums.length;
};


배열을 Set로 변환하는 것은 간단합니다. Set 생성자에서 새로운 배열로 펼치기만 하면 됩니다. 크기(항목 수)를 계산하는 속성이 있습니다. 우리는 그것을 원래 배열의 길이인 nums와 비교하기만 하면 됩니다.

return set.size != nums.length;


두 번째 솔루션



우리의 ( first solution ) 와 매우 유사하게 배열을 반복하고 평가할 때 배열의 해시 테이블을 생성할 수 있습니다.

var containsDuplicate = function(nums) {
   const hashTable = new Map();

    for(let i = 0; i < nums.length; i++) {
        if(hashTable.has(nums[i])) return true;
        else hashTable.set(nums[i], true);

    }
    return false;
};


이것을 조금 세분화하기 위해 먼저 숫자 배열을 반복합니다. 지도에 이미 값이 있으면 true를 반환합니다. 우리는 이것을 map s의 .has 속성으로 확인합니다.

if(hashtable.has(nums[i]) return true;


그렇지 않으면 지도에 추가하고 계속 진행합니다.

else hashTable.set(nums[i], true);


우리가 그다지 신경 쓰지 않기 때문에 가치는 꽤 관련이 없습니다. 아마도 여기에 더 적합한 데이터 구조가 있을 것입니다.

연결하자



자세한 내용은 Relatable Code에서 확인하세요.

이 내용이 마음에 드셨다면 언제든지 저에게 연락하거나

newsletter에서 내 무료 개발자 로드맵과 주간 기술 산업 뉴스를 확인하십시오.

좋은 웹페이지 즐겨찾기