https://leetcode.com/problems/find-in-mountain-array/
# """
# This is MountainArray's API interface.
# You should not implement it, or speculate about its implementation
# """
#class MountainArray:
# def get(self, index: int) -> int:
# def length(self) -> int:
class Solution:
def findInMountainArray(self, target: int, mountain_arr: 'MountainArray') -> int:
l, r = 0, mountain_arr.length()
while l + 2 < r:
p, q = (l + r)//2, (l + r)//2 + 1
fp, fq = mountain_arr.get(p), mountain_arr.get(q)
if fp < fq:
l = p
else:
r = q
crit, val = l, mountain_arr.get(l)
for i in range(l+1, min(r+1, mountain_arr.length())):
fi = mountain_arr.get(i)
if fi > val:
crit, val = i, fi
if val == target:
return crit
l, r = 0, crit
if mountain_arr.get(l) == target:
return l
while l + 1 < r:
m = (l + r)//2
fm = mountain_arr.get(m)
if fm >= target:
r = m
else:
l = m
if mountain_arr.get(r) == target:
return r
l, r = crit, mountain_arr.length()-1
while l + 1 < r:
m = (l + r)//2
fm = mountain_arr.get(m)
if fm > target:
l = m
else:
r = m
if mountain_arr.get(r) == target:
return r
return -1
너무 쓰레기 같이 풀었다 반성해야지
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.