728x90

704. Binary Search

704binarysearch

Given an array of integers nums which is sorted in ascending order, and an integer target, write a function to search target in nums. If target exists, then return its index. Otherwise, return -1.

You must write an algorithm with O(log n) runtime complexity.

 

주어진 배열은 정수의 오름차순이며 타겟하는 정수를 찾는 함수를 만들자. 타겟이 배열에 있으면 인덱스를 리턴하고 타겟이 배열에 없으면 -1 을 리턴하자.

 

주어진 문제

Example 1:

Input: nums = [-1,0,3,5,9,12], target = 9
Output: 4
Explanation: 9 exists in nums and its index is 4

Example 2:

Input: nums = [-1,0,3,5,9,12], target = 2
Output: -1
Explanation: 2 does not exist in nums so return -1

 

통과한 답안

class Solution(object):
    def search(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        left = 0
        right = len(nums) - 1
        while left <= right:
            mid = int((left + right) / 2)
            if nums[mid] == target:
                return mid
            elif target < nums[mid]:
                right = mid -1
            else:
                left = mid + 1
        return -1

 

알고리즘 문제를 처음 도전해봤는데, 짧은 문제에 비해 손으로도 끄적거려보고 생각할게 많았습니다. 이제 시작하는 사람이지만 소이 말하는 '진짜' 코딩이 궁금하여 알고리즘 14일 플랜을 시작해봤는데, 역시 기초가 탄탄해야하고 갈길은 멉니다 ㅎㅎ

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기