Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

package com.leetcode.arrays.binarysearch;

import static org.junit.jupiter.api.Assertions.assertEquals;
Expand Down Expand Up @@ -42,10 +43,14 @@ public class SearchInsertPosition {
* @return
*/
public static int searchInsert(int[] nums, int target) {
if (nums == null) {
throw new IllegalArgumentException("nums must not be null");
}

int low = 0;
int high = nums.length - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
int mid = low + ((high - low) >>> 1);
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.leetcode.arrays.binarysearch;

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import com.leetcode.arrays.binarysearch.SearchInsertPosition;

/**
* Unit tests for SearchInsertPosition.
*/
class SearchInsertPositionTest {

@Test
void test_targetFound() {
int[] nums = {1, 3, 5, 6};
assertEquals(2, SearchInsertPosition.searchInsert(nums, 5));
}

@Test
void test_targetSmallerThanAll() {
int[] nums = {10, 20, 30, 40};
assertEquals(0, SearchInsertPosition.searchInsert(nums, 5));
}

@Test
void test_targetGreaterThanAll() {
int[] nums = {10, 20, 30, 40};
assertEquals(4, SearchInsertPosition.searchInsert(nums, 50));
}

@Test
void test_targetBetweenTwoElements() {
int[] nums = {1, 3, 5, 6};
assertEquals(1, SearchInsertPosition.searchInsert(nums, 2));
}

@Test
void test_emptyArray() {
int[] nums = {};
assertEquals(0, SearchInsertPosition.searchInsert(nums, 7));
}

@Test
void test_nullArray_throwsException() {
int[] nums = null;
assertThrows(IllegalArgumentException.class,
() -> SearchInsertPosition.searchInsert(nums, 1));
}
}