Algorithm/1일 1코테
[💕 LeetCode Python] 704. Binary Search
대인보우
2020. 10. 26. 14:27
반응형
리트코드
[ 704. Binary Search ]
문제 및 문제설명
leetcode.com/problems/binary-search/submissions/
Binary Search - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
내가 제출한 답
def search(self, nums: List[int], target: int) -> int:
if any(i == target for i in nums): # target이랑 같은 값이 있으면
return nums.index(target) #해당 인덱스 출력
else: #없으면
return -1
하지만 실제 코테에서 이진검색을 요구했을 때 이렇게 풀면 감점당할 수 있다고 한다.
이진검색을 활용한 풀이
#이진검색 1 - 재귀
def search(self, nums: List[int], target: int) -> int:
def binary_search(left, right):
if left <= right:
mid = (left+right)//2
if nums[mid] < target:
return binary_search(mid+1, right)
elif nums[mid] > target:
return binary_search(left, mid-1)
else:
return mid
else:
return -1
return binary_search(0, len(nums)-1)
# 이진검색2 - for문
def search(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums)-1
while left <= right:
mid = (left+right)//2
if nums[mid] < target:
left = mid+1
elif nums[mid] > target:
right = mid-1
else:
return mid
return -1
# 이진검색 - bisect 패키지 사용
def search(self, nums: List[int], target: int) -> int:
index = bisect.bisect_left(nums, target)
if index < len(nums) and nums[index] == target:
return index
else:
return -1
# 이진 검색을 사용하지 않는 인덱스 풀이
def search(self, nums: List[int], target: int) -> int:
try:
return nums.index(target)
except ValueError:
return -1
반응형