赞
踩
这道题就是寻找target的目标位置,如果nums中包含target直接返回索引;如果不包含,需要返回target存放的合适位置
注意这道题有一个细节地方需要注意:如果现在target没有在nums中出现,并且目前的target是nums中最大的那一个,此时我们使用的二分算法只能够寻找到数组的最后一个索引位置。因此,需要我们手动在最后判断一下,如果最后一个索引位置的数字 < target,那么就需要返回最后一个索引位置+1的索引位置
class Solution { public: int searchInsert(vector<int>& nums, int target) { //最终寻找的位置是 第一个 >= target 的数字 //我们将数组划分为两段 1. 小于target 2.大于等于target //也就是寻找区间的左端点 int left = 0, right = nums.size()-1; while(left < right) { int mid = left + (right - left) / 2; if(nums[mid] >= target)right = mid; else left = mid + 1; } //需要判断一下最后一个位置 if(nums[left] < target)return left + 1; return left; } };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。