搜索插入位置
题目
1.时间复杂度O(n)
class Solution {public int searchInsert(int[] nums, int target) {for (int i=0; i< nums.length; i++){if (target == nums[i]){return i;} if (target < nums[i]){ //数组升序return i;}} return nums.length;}
}
2.二分查找
class Solution {public int searchInsert(int[] nums, int target) {int left = 0;int right = nums.length-1;int mid = 0;while(left <= right){mid = left + (right - left)/2;if (target == nums[mid]){return mid;}else if (target < nums[mid]){right = mid - 1;}else{left = mid + 1;}}return left; //left > right}
}
3.暴力
class Solution {public int searchInsert(int[] nums, int target) {// 遍历for(int i = 0; i < nums.length; i++){if(target <= nums[i]){return i;}}return nums.length;}
}
总结:第三种对第一种进行了优化,条件可以合并