leetcode35.搜索插入位置/二分查找

文章目录

    • 题目:leetcode35.搜索插入位置
    • 基本思想1:二分查找
    • 基本思想2:顺序查找

题目:leetcode35.搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

你可以假设数组中无重复元素。

示例 1:

输入: [1,3,5,6], 5
输出: 2

示例 2:

输入: [1,3,5,6], 2
输出: 1

示例 3:

输入: [1,3,5,6], 7
输出: 4

示例 4:

输入: [1,3,5,6], 0
输出: 0

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/search-insert-position
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

基本思想1:二分查找

注意:在尾部插入时要特别判断。

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        //二分查找
        int l = 0, r = nums.size() - 1;
        while(l < r){
            int mid = (l + r) >> 1;
            if(nums[mid] < target)
                l = mid + 1;
            else
                r = mid;
        }
        return target > nums[l] ? l + 1 : l;
    }
};

基本思想2:顺序查找

#include
#include

using namespace std;

int searchInsert(vector<int> nums,int target){
		int j=0;
        
        for(int i=0;i<nums.size();i++){
            if(target>nums[i])
                j++;
            else
                break;
        }
        return j;
}

int main(){
	vector<int> nums;
	int n,target;
	while(cin>>n){
		nums.push_back(n);
		if(cin.get()=='\n')
			break;
	}
	cin>>target;
	cout<<searchInsert(nums,target);
	return 0;
}

提交结果:

执行结果:通过
显示详情
执行用时 :8 ms, 在所有 C++ 提交中击败了80.95%的用户
内存消耗 :8.9 MB, 在所有 C++ 提交中击败了77.48%的用户

你可能感兴趣的:(#,算法)