Skip to content

Commit 06f3863

Browse files
refactor 35 to log(n) solution
1 parent a19e7c7 commit 06f3863

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

src/main/java/com/fishercoder/solutions/_35.java

+11-5
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,19 @@ public class _35 {
44

55
public static class Solution1 {
66
public int searchInsert(int[] nums, int target) {
7-
int len = nums.length;
8-
for (int i = 0; i < len; i++) {
9-
if (target <= nums[i]) {
10-
return i;
7+
int left = 0;
8+
int right = nums.length - 1;
9+
while (left < right) {
10+
int mid = left + (right - left) / 2;
11+
if (nums[mid] == target) {
12+
return mid;
13+
} else if (nums[mid] < target) {
14+
left = mid + 1;
15+
} else {
16+
right = mid - 1;
1117
}
1218
}
13-
return len;
19+
return nums[left] >= target ? left : left + 1;
1420
}
1521
}
1622

src/test/java/com/fishercoder/_35Test.java

+6
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,10 @@ public void test1() {
2020
nums = new int[]{1, 3, 5, 6};
2121
assertEquals(2, solution1.searchInsert(nums, 5));
2222
}
23+
24+
@Test
25+
public void test2() {
26+
nums = new int[]{1};
27+
assertEquals(0, solution1.searchInsert(nums, 1));
28+
}
2329
}

0 commit comments

Comments
 (0)