Skip to content

Commit c20f58d

Browse files
add a solution for 704
1 parent 06f3863 commit c20f58d

File tree

2 files changed

+64
-37
lines changed

2 files changed

+64
-37
lines changed

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

+18
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,22 @@ public int search(int[] nums, int target) {
2626
return -1;
2727
}
2828
}
29+
30+
public static class Solution2 {
31+
public int search(int[] nums, int target) {
32+
int left = 0;
33+
int right = nums.length - 1;
34+
while (left < right) {
35+
int mid = left + (right - left) / 2;
36+
if (nums[mid] == target) {
37+
return mid;
38+
} else if (nums[mid] < target) {
39+
left = mid + 1;
40+
} else {
41+
right = mid - 1;
42+
}
43+
}
44+
return nums[left] == target ? left : (right >= 0 && nums[right] == target) ? right : -1;
45+
}
46+
}
2947
}

src/test/java/com/fishercoder/_704Test.java

+46-37
Original file line numberDiff line numberDiff line change
@@ -7,41 +7,50 @@
77
import static org.junit.Assert.assertEquals;
88

99
public class _704Test {
10-
private static _704.Solution1 solution1;
11-
private static int[] nums;
12-
13-
@BeforeClass
14-
public static void setup() {
15-
solution1 = new _704.Solution1();
16-
}
17-
18-
@Test
19-
public void test1() {
20-
nums = new int[] {-1, 0, 3, 5, 9, 12};
21-
assertEquals(4, solution1.search(nums, 9));
22-
}
23-
24-
@Test
25-
public void test2() {
26-
nums = new int[] {-1, 0, 3, 5, 9, 12};
27-
assertEquals(-1, solution1.search(nums, 2));
28-
}
29-
30-
@Test
31-
public void test3() {
32-
nums = new int[] {5};
33-
assertEquals(0, solution1.search(nums, 5));
34-
}
35-
36-
@Test
37-
public void test4() {
38-
nums = new int[] {-1, 0};
39-
assertEquals(1, solution1.search(nums, 0));
40-
}
41-
42-
@Test
43-
public void test5() {
44-
nums = new int[] {-1, 0, 3, 5, 9, 12};
45-
assertEquals(1, solution1.search(nums, 0));
46-
}
10+
private static _704.Solution1 solution1;
11+
private static _704.Solution2 solution2;
12+
private static int[] nums;
13+
14+
@BeforeClass
15+
public static void setup() {
16+
solution1 = new _704.Solution1();
17+
solution2 = new _704.Solution2();
18+
}
19+
20+
@Test
21+
public void test1() {
22+
nums = new int[]{-1, 0, 3, 5, 9, 12};
23+
assertEquals(4, solution1.search(nums, 9));
24+
}
25+
26+
@Test
27+
public void test2() {
28+
nums = new int[]{-1, 0, 3, 5, 9, 12};
29+
assertEquals(-1, solution1.search(nums, 2));
30+
}
31+
32+
@Test
33+
public void test3() {
34+
nums = new int[]{5};
35+
assertEquals(0, solution1.search(nums, 5));
36+
assertEquals(0, solution2.search(nums, 5));
37+
}
38+
39+
@Test
40+
public void test4() {
41+
nums = new int[]{-1, 0};
42+
assertEquals(1, solution1.search(nums, 0));
43+
}
44+
45+
@Test
46+
public void test5() {
47+
nums = new int[]{-1, 0, 3, 5, 9, 12};
48+
assertEquals(1, solution1.search(nums, 0));
49+
}
50+
51+
@Test
52+
public void test6() {
53+
nums = new int[]{2, 5};
54+
assertEquals(-1, solution2.search(nums, 0));
55+
}
4756
}

0 commit comments

Comments
 (0)