// c语言
int searchInsert(int* nums, int numsSize, int target){
if(numsSize == 0){
return 0;
}
int start = 0;
int mid;
int end = numsSize - 1;
while(start + 1 < end){
mid = start + (end - start)/2;
if(nums[mid] == target){
return mid;
}else if(nums[mid] > target){
end = mid;
}else{
start = mid;
}
}
if(nums[start] == target|| nums[start] > target){
return start;
}else if(nums[start] < target && nums[end] > target){
return end;
}else if(nums[end] == target ){
return end;
}else {
if(end < numsSize){
return end + 1;
}else{
return numsSize;
}
}
return ;
}
// java语言
class Solution {
public int searchInsert(int[] nums, int target) {
if(nums == null || nums.length == 0){
return 0;
}
int start =0;
int mid;
int end = nums.length -1;
while(start + 1 < end){
mid = start + (end - start)/2;
if(nums[mid] == target){
return mid;
}else if(nums[mid] < target){
start = mid;
}else{
end = mid;
}
}
if(nums[start] == target || target < nums[start]){
return start;
}else if(nums[start] < target && target < nums[end]){
return end;
}else{
if(nums[end] == target){
return end;
}else{
return end+1;
}
}
}
}
//c++
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
if(nums.size() == 0){
return 0;
}
int start = 0;
int mid;
int end = nums.size()-1;
while(start + 1 < end){
mid = start + (end - start)/2;
if(nums[mid] == target){
return mid;
}else if(nums[mid] > target){
end = mid;
}else{
start = mid;
}
}
if(nums[start] > target || nums[start] ==target){
return start;
}else if(nums[start] < target && nums[end] > target){
return end;
}else if(nums[end] == target){
return end;
}else{
return end + 1;
}
}
};
// java
class Solution {
public int search(int[] nums, int target) {
if(nums == null || nums.length == 0){
return -1;
}
int start = 0;
int mid;
int end = nums.length-1;
while(start + 1 < end){
mid = start + (end - start)/2;
if(nums[mid] == target){
return mid;
}else if(nums[mid] > target){
end = mid;
}else{
start = mid;
}
}
if(nums[start] == target){
return start;
}
if(nums[end] == target){
return end;
}
return -1;
}
}