LeetCode 35. Search Insert Position
原题链接在这里:https://leetcode.com/problems/search-insert-position/description/
题目:
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Here are few examples.[1,3,5,6]
, 5 → 2[1,3,5,6]
, 2 → 1[1,3,5,6]
, 7 → 4[1,3,5,6]
, 0 → 0
题解:
二分法查找,若是loop中找到了就返回mid, 若是没有找到,跳出loop时,恰巧 l 会走到比target 大的index上, r会走到比target小的index上。
Time Complexity: O(log n). Space O(1).
AC Java:
1 public class Solution { 2 public int searchInsert(int[] nums, int target) { 3 if(nums == null){ 4 throw new IllegalArgumentException("Invalid input array."); 5 } 6 7 int l = 0; 8 int r = nums.length-1; 9 while(l<=r){ 10 int mid = l + (r-l)/2; 11 if(nums[mid] > target){ 12 r = mid-1; 13 }else if(nums[mid] < target){ 14 l = mid+1; 15 }else{ 16 return mid; 17 } 18 } 19 return l; 20 } 21 }
跟上Find First and Last Position of Element in Sorted Array, First Bad Version.
【推荐】FlashTable:表单开发界的极速跑车,让你的开发效率一路狂飙
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步