Skip to content

Commit eee319b

Browse files
fix 540
1 parent 8046044 commit eee319b

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ public int singleNonDuplicate(int[] nums) {
1717
int end = nums.length - 1;
1818
while (start < end) {
1919
int mid = start + (end - start) / 2;
20-
if (nums[mid] != nums[mid + 1] && nums[mid] != nums[mid - 1]) {
20+
if (mid + 1 < nums.length && nums[mid] != nums[mid + 1] && mid - 1 >= 0 && nums[mid] != nums[mid - 1]) {
2121
return nums[mid];
22-
} else if (nums[mid] == nums[mid + 1] && mid % 2 == 0) {
22+
} else if (mid + 1 < nums.length && nums[mid] == nums[mid + 1] && mid % 2 == 0) {
2323
start = mid + 1;
24-
} else if (nums[mid] == nums[mid - 1] && mid % 2 == 1) {
24+
} else if (mid - 1 >= 0 && nums[mid] == nums[mid - 1] && mid % 2 == 1) {
2525
start = mid + 1;
2626
} else {
2727
end = mid - 1;

src/test/java/com/fishercoder/_540Test.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,13 @@ public void test4() {
5555
assertEquals(expected, solution2.singleNonDuplicate(nums));
5656
assertEquals(expected, solution3.singleNonDuplicate(nums));
5757
}
58+
59+
@Test
60+
public void test5() {
61+
nums = new int[]{1, 2, 2, 3, 3};
62+
expected = 1;
63+
assertEquals(expected, solution1.singleNonDuplicate(nums));
64+
assertEquals(expected, solution2.singleNonDuplicate(nums));
65+
assertEquals(expected, solution3.singleNonDuplicate(nums));
66+
}
5867
}

0 commit comments

Comments
 (0)