Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- daily challenge
- 스택
- Java
- 분할정복
- 프로그래머스 java
- 카카오
- 그래프 자바
- 자바
- 백준 16935
- 자바 5464
- java 프로그래머스
- DP
- 리트코드 1557
- 프로그래머스
- BFS
- 구현
- 백준
- java leetcode
- leetcode
- 코테
- 백준 18222
- 인텔리제이 에러
- 코딩테스트
- 리트코드 자바
- 파이썬
- dfs
- 자바 리트코드
- leetcode 1721
- 스프링 에러
- 리트코드
Archives
- Today
- Total
레벨업 일지
[Java/Python3] leetcode 35. Search Insert Position 본문
문제
https://leetcode.com/problems/search-insert-position/description/
Search Insert Position - LeetCode
Search Insert Position - Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You must write an algorithm with O(log n) runtime com
leetcode.com
이진 탐색을 할줄 아니? 물어보는 문제
풀이
정렬된 배열에서의 이진 탐색 알고리즘은 다음과 같다. 자주 사용되는 O ( lon N ) 로직임으로, 아직 모른다면 꼭 공부 해야한다.
1. left = 0 , right = nums.length -1 로 양 끝단 위치를 가리키는 포인터를 생성한다.
2. left 와 right 의 절반 지점에 있는 mid 포인터를 생성.
3. mid < target 이면, [ left .. mid ] 범위 안에는 target이 존재하지 않음으로, left = mid + 1
4. mid > target 이면, [mid .. right] 범위 안에 target이 존재하지 않음으로 날린다 .
5. mid == target이면 return mid
6. 그게 아니면 , left 를 리턴한다.
코드
자바
class Solution {
public int searchInsert(int[] nums, int target) {
int left = 0;
int right = nums.length-1;
int mid = left + (right - left)/2;
while(left <=right){
mid = left + (right - left)/2;
if(nums[mid] == target)return mid;
else if(nums[mid] < target) left = mid+1;
else right = mid-1;
}
return left;
}
}
파이썬
class Solution:
def searchInsert(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums)-1
while left <= right:
mid = left + (right-left)//2
if nums[mid] == target : return mid
elif nums[mid] < target : left = mid + 1
else : right = mid -1
return left
'알고리즘 > leetcode' 카테고리의 다른 글
[Java/Python ] leetcode 136. Single Number (0) | 2023.01.21 |
---|---|
[Java] leetcode 93. Restore IP Addresses (0) | 2023.01.21 |
[Java/Python3] leetcode 300. Longest Increasing Subsequence (0) | 2023.01.15 |
[java/python3]leetcode 1838. Frequency of the Most Frequent Element (2) | 2023.01.11 |
[java/python3] leetcode 259. 3Sum Smaller (0) | 2023.01.10 |
Comments