1346. Check If N and Its Double Exist

늘보·2021년 9월 7일
0

LeetCode

목록 보기
28/69

💡풀이

/**
 * @param {number[]} arr
 * @return {boolean}
 */
// My solution
var checkIfExist = function (arr) {
  for (let i = 0; i < arr.length; i++) {
    if (arr.includes(arr[i] / 2) && arr.indexOf(arr[i] / 2) !== i) return true;
  }
  return false;
};

// Set
var checkIfExist = function (arr) {
  let set = new Set();
  for (const item of arr) {
    if (set.has(item * 2) || set.has(item / 2)) return true;
    set.add(item);
  }

  return false;
};

let arr = [10, 2, 5, 3];
checkIfExist(arr);


📝정리

위는 내가 푼 방법이다. 처음에는 includes 조건 하나만 사용했었으나, 요소 중 0이 있는 경우는 false로 반환해야 하지만 true로 반환하기 때문에, (0/2 === 0) arr.indexOf(arr[i] / 2) !== i) 라는 조건을 추가해줬다.

아래의 방법은 리뷰 때 새로 배운 방법으로, set을 사용한 방법이다. set에 값을 담아놓고 반복문을 돌며 has 메서드를 통해 이미 있는 값(item*2 or item / 2)이면 바로 truereturn하는 방법이다.

수정, 지적을 환영합니다!

문제 링크

https://leetcode.com/problems/check-if-n-and-its-double-exist/

LeetCode GitHub

https://github.com/tTab1204/LeetCode

0개의 댓글