這個題目還是屬於查找類的題目,和前面的題目比較類似,題目的要求是給定一個target,在有序數組裡面查找該元素的插入順序,若存在了則返回該元素的下標。這道題比較直觀,所以比較容易動手,需要注意到的應該就是邊界條件的問題吧,比如說:
(1). 目標元素比排序數組中的最小元素還小
(2). 目標元素比排序數組中的最大元素還大
請看代碼吧,代碼寫的還是比較清晰的
class Solution { public: int searchInsert(vector& nums, int target) { int len = nums.size(); if (len == 0) { return 0; } int left = 0; int right = len - 1; int mid = 0; if (target > nums[right]) { return right + 1; } while (left < right) { mid = left + (right - left) / 2; if (nums[left] == target) { return left; } if (nums[right] == target) { return right; } if (nums[mid] == target) { return mid; } if (nums[mid] > target) { right = mid; } else { left = mid + 1; } } return left; } };