본문 바로가기
Coding Test/LeetCode

[Javascript] LeetCode 167. Two Sum II - Input Array Is Sorted

by Chaedie 2022. 7. 13.
728x90

[Javascript] LeetCode 167. Two Sum II - Input Array Is Sorted

💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.

내 풀이

/**
 * @param {number[]} numbers
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(numbers, target) {
  let lt = 0;
  let rt = numbers.length -1;
  let twoSum = 0;
  while (lt < rt) {
    twoSum = numbers[lt] + numbers[rt];
    if (twoSum === target) {
      return [lt + 1, rt + 1];
    }
    if (twoSum < target) {
      lt++;
      continue;
    }
    if (twoSum > target) {
      rt--;
      continue;
    }
  }

};
  • 내 풀이 2 ( else에 넣고 삼항연산자 사용)

/**
 * @param {number[]} numbers
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(numbers, target) {
  let lt = 0;
  let rt = numbers.length -1;
  let twoSum = 0;
  while (lt < rt) {
    twoSum = numbers[lt] + numbers[rt];
    if (twoSum === target) {
      return [lt + 1, rt + 1];
    } else {
            twoSum < target ? lt++ : rt--;
        }
  }

};
  • 삼항연산자가 가독성은 안 좋은 것같아요.
  • 근데 리액트에서 많이 쓰여서 익숙해져야 할듯

다른 사람 풀이 1

# PYTHON
# binary search        
def twoSum(self, numbers, target):
    for i in xrange(len(numbers)):
        l, r = i+1, len(numbers)-1
        tmp = target - numbers[i]
        while l <= r:
            mid = l + (r-l)//2
            if numbers[mid] == tmp:
                return [i+1, mid+1]
            elif numbers[mid] < tmp:
                l = mid+1
            else:
                r = mid-1
  • 파이썬 풀이지만… binarySearch로도 풀 수 있네요.

댓글