File tree Expand file tree Collapse file tree 1 file changed +49
-0
lines changed
search-in-rotated-sorted-array Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+ public int search (int [] nums , int target ) {
3+ int leftSide = 0 ;
4+ int rightSide = nums .length - 1 ;
5+ int left = 0 ;
6+ int right = nums .length ;
7+ int mid ;
8+
9+ if (nums .length == 1 ) {
10+ if (nums [0 ] == target ) return 0 ;
11+ else return -1 ;
12+ }
13+
14+ while (left + 1 < right ) {
15+ mid = (int ) (left + right ) / 2 ;
16+
17+ if (nums [mid ]==target ) {
18+ break ;
19+ }
20+ else if (nums [mid ] < target ){ // 값이 증가해야함
21+ if (nums [mid ] >= nums [leftSide ]){ // 왼쪽 그룹에 속하는 지
22+ left = mid ;
23+ } else { // 오른쪽 그룹에 속하는 지
24+ if (nums [rightSide ] < target ) {
25+ right = mid ;
26+ } else {
27+ left = mid ;
28+ }
29+ }
30+ } else { // nums[mid] > target // 값이 감소해야함
31+ if (nums [mid ] >= nums [leftSide ]){ // 왼쪽 그룹에 속하는 지
32+ if (nums [leftSide ] <= target ) {
33+ right = mid ;
34+ } else {
35+ left = mid ;
36+ }
37+ } else { // 오른쪽 그룹에 속하는 지
38+ right = mid ;
39+ }
40+
41+ }
42+ }
43+ mid = (int )((left + right ) / 2 );
44+ if (nums [mid ]==target ) return mid ;
45+ else return -1 ;
46+ }
47+ }
48+
49+
You can’t perform that action at this time.
0 commit comments