Skip to content

Commit 5b428bd

Browse files
committed
Added one solution & refactored one solution
1 parent 337907b commit 5b428bd

File tree

2 files changed

+42
-20
lines changed

2 files changed

+42
-20
lines changed

Easy/Binary Search.java

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
class Solution {
2-
public int search(int[] nums, int target) {
3-
return searchImpl(nums, target, 0, nums.length-1);
4-
}
5-
6-
public int searchImpl(int[] nums, int target, int start, int end) {
7-
if (start > end) {
8-
return -1;
9-
}
10-
11-
int mid = (start + end)/2;
12-
13-
if (nums[mid] == target) {
14-
return mid;
15-
}
16-
else if (nums[mid] > target) {
17-
return searchImpl(nums, target, start, mid-1);
18-
}
19-
else {
20-
return searchImpl(nums, target, mid+1, end);
21-
}
2+
public int search(int[] nums, int target) {
3+
return binarySearchImpl(nums, 0, nums.length - 1, target);
4+
}
5+
6+
private int binarySearchImpl(int[] nums, int start, int end, int target) {
7+
while (start <= end) {
8+
int mid = (start + end) / 2;
9+
if (nums[mid] == target) {
10+
return mid;
11+
}
12+
else if (nums[mid] > target) {
13+
end = mid - 1;
14+
}
15+
else {
16+
start = mid + 1;
17+
}
2218
}
19+
return -1;
20+
}
2321
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution {
2+
public char nextGreatestLetter(char[] letters, char target) {
3+
int start = 0;
4+
int end = letters.length - 1;
5+
// ASCII char greater than 'z'
6+
char smallestChar = '{';
7+
while (start <= end) {
8+
int mid = (start + end) / 2;
9+
if (letters[mid] - target > 0) {
10+
if (smallestChar - letters[mid] > 0) {
11+
smallestChar = letters[mid];
12+
}
13+
end = mid - 1;
14+
}
15+
else if (letters[mid] - target == 0) {
16+
start = mid + 1;
17+
}
18+
else {
19+
start = mid + 1;
20+
}
21+
}
22+
return smallestChar == '{' ? letters[0] : smallestChar;
23+
}
24+
}

0 commit comments

Comments
 (0)