leetcode纯小白刷题日记——第35题(搜索插入位置)

在这里插入图片描述
正确的C++代码如下:

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
    /***vector数组可以去查阅相关命令[https://blog.csdn.net/Flag_ing/article/details/123380655]***/
            int n=nums.size(); /***首先会获得数组的长度n,采用 nums.size()***/
            int left=0; 
            int right=n-1;/***二分查找首先是将数组的最左边元素的序号与最右边的序号进行定义***/
            int ans=n;/***这是返回的输出值***/
            while (left<=right){/***当左侧序号值小于等于右侧序号值时,进行循环***/
                int mid=((right-left)>>1)+left; /***这是一个比较好的用法,将两者之差向后移动一位,该移动是建立在二进制上的,其效果相当于除以2***/
                if (nums[mid]>=target){/***可以理解为高中数学里的二分法,将数组里的数字与给定的target进行比较***/
                    right=mid-1; /*** 将right的编号进行重新赋予,定义新的搜索区间***/
                    ans=mid;/***ans返回值更新为mid***/
                }else{
                    left=mid+1;/***否则将left进行重新赋予***/
                }
            }
            return ans;
    }
};

/***里面有几个细节:
1. 为什么ans初值要定义为int ans=n; 示例3给出了答案。
2. 如果if条件语句中的'right=mid','left=mid'会出现什么样的情况?可以在leetcode里面尝试一下。***/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值