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에서 내 무료 개발자 로드맵과 주간 기술 산업 뉴스를 확인하십시오.
Reference
이 문제에 관하여(JavaScript LeetCode에 중복 포함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/diballesteros/javascript-leetcode-contains-duplicate-5c9k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)