思路:先用STL下界函数查找,找到返回,找不到插入,插入后再对后面排序
官方标注 :时间复杂度为log n 的,它是再查找中优化的利用的二分查找,但是STL的lower_bound 的查找用也是二分//滑动狗头
(1)对于vector每次的插入、删除均会使迭代器失效
(2) 对于迭代的重载可以用下标 i 和 begin() 完成 ,例如 想取nums[i]的迭代器,iterator=nums.begin()+i;
int searchInsert(vector<int>& nums, int target) { //lower_bound vector<int>::iterator begin = lower_bound(nums.begin(), nums.end(), target); if (begin==nums.end()||*begin != target) {//不存在 int i= (int)(begin - nums.begin());//记录一下插入下标 nums.push_back(target);//插入迭代器begin失效 begin = nums.begin() + i;//此处重新取得nums[i]的迭代器 sort(begin,nums.end()); return (int)(begin - nums.begin()); } else {//存在 return (int)(begin - nums.begin()); } }