35搜尋插入位置
阿新 • • 發佈:2022-01-26
一、題目
給定一個排序陣列和一個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。
請必須使用時間複雜度為 O(log n) 的演算法。
示例 1: 輸入: nums = [1,3,5,6], target = 5 輸出: 2 示例 2: 輸入: nums = [1,3,5,6], target = 2 輸出: 1 示例 3: 輸入: nums = [1,3,5,6], target = 7 輸出: 4 示例 4: 輸入: nums = [1,3,5,6], target = 0 輸出: 0 示例 5: 輸入: nums = [1], target = 0 輸出: 0 提示: 1 <= nums.length <= 104 -104 <= nums[i] <= 104 nums 為無重複元素的升序排列陣列 -104 <= target <= 104
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/search-insert-position
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
二、解題
目標:
1、查詢元素,在排序陣列中,要求O(logn)時間,可以選擇二分查詢
2、若查詢失敗,按陣列順序插入目標元素,插入位置在low處。
三、程式碼
class Solution { public int searchInsert(int[] nums, int target) { int low = 0; int high = nums.length - 1; while(low <= high) { // 找到目標值 int mid = low + (high - low) / 2; if (nums[mid] == target) { return mid; } // 未找到目標值查詢插入位置 if (nums[mid] > target) { high = mid - 1; } else { low = mid + 1; } } return low; } }