Skip to content

Commit ee40e18

Browse files
authored
Improved task 744.
1 parent d40e5e2 commit ee40e18

File tree

2 files changed

+18
-17
lines changed
  • src
    • main/java/g0701_0800/s0744_find_smallest_letter_greater_than_target
    • test/java/g0701_0800/s0744_find_smallest_letter_greater_than_target

2 files changed

+18
-17
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,24 @@
11
package g0701_0800.s0744_find_smallest_letter_greater_than_target;
22

33
// #Easy #Array #Binary_Search #Binary_Search_I_Day_4
4-
// #2022_03_25_Time_0_ms_(100.00%)_Space_42.5_MB_(91.35%)
4+
// #2022_04_30_Time_0_ms_(100.00%)_Space_47.4_MB_(68.35%)
55

66
public class Solution {
77
public char nextGreatestLetter(char[] letters, char target) {
8-
if (letters[0] > target) {
9-
return letters[0];
8+
int start = 0;
9+
int end = letters.length - 1;
10+
// If target is greater than last element return first element of the array.
11+
if (letters[letters.length - 1] <= target) {
12+
return letters[start];
1013
}
11-
int left = 0;
12-
int right = letters.length - 1;
13-
while (left < right) {
14-
int mid = left + (right - left) / 2;
15-
if (letters[mid] > target) {
16-
while (letters[mid] > target) {
17-
mid--;
18-
}
19-
return letters[++mid];
14+
while (start < end) {
15+
int mid = start + (end - start) / 2;
16+
if (letters[mid] <= target) {
17+
start = mid + 1;
2018
} else {
21-
left = mid + 1;
19+
end = mid;
2220
}
2321
}
24-
if (right < letters.length && letters[right] > target) {
25-
return letters[right];
26-
}
27-
return letters[0];
22+
return letters[start];
2823
}
2924
}

src/test/java/g0701_0800/s0744_find_smallest_letter_greater_than_target/SolutionTest.java

+6
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,10 @@ void nextGreatestLetter3() {
2323
assertThat(
2424
new Solution().nextGreatestLetter(new char[] {'c', 'f', 'j'}, 'd'), equalTo('f'));
2525
}
26+
27+
@Test
28+
void nextGreatestLetter4() {
29+
assertThat(
30+
new Solution().nextGreatestLetter(new char[] {'c', 'f', 'j'}, 'k'), equalTo('c'));
31+
}
2632
}

0 commit comments

Comments
 (0)