Skip to content

Commit

Permalink
add post '(Leetcode) 33 - Search in Rotated Sorted Array'
Browse files Browse the repository at this point in the history
  • Loading branch information
dev-jonghoonpark committed Jun 3, 2024
1 parent 844a7df commit 1810720
Showing 1 changed file with 83 additions and 0 deletions.
83 changes: 83 additions & 0 deletions _posts/2024-06-03-leetcode-33.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
layout: post
title: (Leetcode) 33 - Search in Rotated Sorted Array
categories: [스터디-알고리즘]
tags:
[자바, java, 리트코드, Leetcode, 알고리즘, algorithm, pointer, rotate, array]
date: 2024-06-03 8:30:00 +0900
toc: true
---

기회가 되어 [달레님의 스터디](https://github.com/DaleStudy/leetcode-study)에 참여하여 시간이 될 때마다 한문제씩 풀어보고 있다.

[https://neetcode.io/practice](https://neetcode.io/practice)

---

[https://leetcode.com/problems/search-in-rotated-sorted-array/](https://leetcode.com/problems/search-in-rotated-sorted-array/)

## 내가 작성한 풀이

값을 발견하면 index를 반환하고, 아닐경우 -1을 반환한다.

```java
class Solution {
public int search(int[] nums, int target) {
for(int i = 0 ; i < nums.length; i++) {
if(nums[i] == target) {
return i;
}
}
return -1;
}
}
```

### TC, SC

시간 복잡도는 O(n)이고, 공간 복잡도는 O(1)이다.

## 조금 더 최적화 하자면 (binary search)

문제에서 O(log n) 의 시간복잡도로 풀어보라고 제시하였다.

[(Leetcode) 153 - Find Minimum in Rotated Sorted Array](https://algorithm.jonghoonpark.com/2024/06/03/leetcode-153)
바로 이전에 풀었던 문제와 비슷하게 접근하면 될 것으로 보인다.

- right가 mid보다 크다? → 오른쪽 부분은 제대로 정렬되어 있다
- right가 mid보다 작다? → 왼쪽 부분은 제대로 정렬되어 있다.

이 두가지를 이용하면 된다.

```java
public int search(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while(left <= right) {
int mid = left + (right - left) / 2;

if (nums[mid] == target) {
return mid;
}

if(nums[mid] < nums[right]) {
if (target < nums[mid] || target > nums[right]) {
right = mid - 1;
} else {
left = mid + 1;
}
} else {
if (target < nums[left] || target > nums[mid]) {
left = mid + 1;
} else {
right = mid - 1;
}
}
}

return -1;
}
```

### TC, SC

시간 복잡도는 O(logn)이고, 공간 복잡도는 O(1)이다.

0 comments on commit 1810720

Please sign in to comment.