2019年5月20日
目录
题目:

解决方法1:
package leetCode;
/**
* Date: 2019/5/20 21 :37
*/
public class SearchForInsertionLocation {
public static void main(String[] args){
int[] nums = {1,3,5,6};
int target = 0;
int result = searchInsert(nums, target);
System.out.println("result="+result);
}
public static int searchInsert(int[] nums, int target) {
if (nums.length == 0){
return 0;
}
// 1.设置比较次数
int count = 0;
for (int index = 0;index < nums.length;index++){
// 2.元素与目标相等,或元素比目标大
if(nums[index] == target || nums[index] > target){
return index ;
}else if(nums[index] < target){
// 3.比较次数加一
count++;
}
}
return count;
}
}
性能结果:

小结:
- 这次比较简单,因为解决思路很清晰:比较每个元素与目标值即可;
- 遍历整个数组 ( 最优时间复杂度O(1),最坏O(n) )
解决方法2:
public static int searchInsert(int[] nums,int target){
int len = nums.length;
if (len == 0) {
return 0; // if the nums is empty, return 0
}
for(int i = 0; i < len; i++) {
if(target <= nums[i]) { // when target <= nums[i] , return
return i;
}
}
return len;
}
性能结果:

解决方法3:
二分查找
class Solution {
public int searchInsert(int[] nums, int target) {
// 1.设置左右边界值
int left = 0;
int right = nums.length;
while (left < right) {
// 2.取中间值mid = left + 差距一半
int mid = left + (right - left) / 2;
// 3.比较两值,根据结果设置左右边界
if (nums[mid] < target) {
left = mid + 1;
}else {
right = mid;
}
}
return left;
}
}
性能结果:

小结:
- 二分查找法, 2的logn次方等于n,最坏时间复杂度为O(logn),最优O(1) ;
250

被折叠的 条评论
为什么被折叠?



