前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >插入位置

插入位置

作者头像
小飞侠xp
发布2018-08-29 11:37:53
8750
发布2018-08-29 11:37:53
举报
文章被收录于专栏:书山有路勤为径

给定一个排序数组nums(无重复元素)与目标值target,如果target在nums里 出现,则返回target所在下标,如果target在nums里未出现,则返回target应该 插入位置的数组下标,使得将target插入数组nums后,数组仍有序。 LeetCode 35. Search Insert Position

算法设计

设元素所在的位置(或最终需要插入的位置)为index, 在二分查找的过程中,index的更新方法: 如果target == nums[mid]:index = mid; 如果target < nums[mid],且 (mid == 0或 target > nums[mid-1]): index = mid; 如果target > nums[mid],且 (mid == nums.size() – 1 或 target < nums[mid+1]): index = mid + 1;

代码语言:javascript
复制
class Solution{
public:
    int searchInsert(std::vector<int> &nums, int target){
        int index = -1;//最终返回的下标,否则为需要插入的位置;
        int begin = 0;
        int end = noms.size() -1;
        while( index == -1){//若index == -1,则说明还未找到正确位置,持续二分搜索
            int mid == (begin + end) / 2;
            if(target ==nums[mid]){
                index = mid;
            }
            else if(target < nums[mid]){
                if(mid == 0 || target > nums[mid-1]){
                    index = mid;
                    }  
                 end = mid -1; 
             }
             else if(target > nums[mid] || mid == nums.size()-1){
                  if(target < nums[mid+1]){
                      return index = mid+1;
                  }
                  begin = mid +1 ;
              }
            
        }
        return index;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.03.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 算法设计
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档