首页 > 编程语言 >【每周例题】力扣 C++ 搜索插入位置

【每周例题】力扣 C++ 搜索插入位置

时间:2024-03-31 16:34:27浏览次数:27  
标签:二分法 target nums int C++ 力扣 插入 数组 例题

搜索插入位置

题目

搜索插入位置

 题目分析

1.第一个想法肯定是暴力遍历,找到了就输出下标,找不到就对比前后两个数字,寻找合适的位置插入。

2.需要注意一点,我们需要再一开始就对比target与数组最后一个数的大小,如果比数组最后一个数大,直接返回数组长度

3.第二个想法就是缩短寻找的时间,我们采用二分法,反复用数组中间的数与target比较,缩短数组长度。

二分法

代码

 代码一(暴力遍历)

class Solution 
{
public:
    int searchInsert(vector<int>& nums, int target) 
    {
        if (target > nums[nums.size()-1])
        {
            return nums.size();
        }
        for (int i = 0; i <= nums.size(); i++)
        {
            if (nums[i] >= target)
            {
                return i;
            }
        }
        return 0;
    }
};

代码二(二分法)

class Solution
{
public:
    int searchInsert(vector<int>& nums, int target)
    {
        int head = 0, tail = nums.size() - 1, middle;
        while (head <= tail)
        {
            middle = (head + tail) / 2;
            if (nums[middle] < target)
                head = middle + 1;
            else
                tail = middle - 1;
        }
        return head;
    }
};

 

标签:二分法,target,nums,int,C++,力扣,插入,数组,例题
From: https://www.cnblogs.com/hcrzhi/p/18106856

相关文章

  • [C++11]右值引用
    阅读导览:通过左值、右值的基础概念来引出左值引用和右值引用知道左值引用和右值引用后,先了解他们为什么能实现(底层原理)熟悉了解左值引用的优点和缺陷并给出疑问,进而引出右值引用出现的意义以及如何解决左值引用的疑问最后从多个方面再次了解右值引用基础概念右值、左值......
  • C++类(class)中的this指针与静态成员
    1.this指针作用:指向成员函数所作用的对象2.静态成员定义方式:在定义成员时加static关键字。访问方式:不用通过对象就可以访问(类似全局变量/全局函数)目的:设置静态成员这种机制的目的是将和某些类紧密相关的全局变量和函数写到类里面,看上去像一个整体,易于维护和理解。①......
  • C++Lambda表达式
    Lambda表达式0、介绍c++11新引入了lambda表达式,一般用于定义匿名函数,使得代码更加灵活简洁。lambda表达式与普通函数类似,也有参数列表、返回值类型和函数体,只是它的定义方式更加简介,并且可以在函数内部定义。通常,lambda用于封装传递给算法或异步方法的几行代码。1、Lambd......
  • 老鹰捉小鸡 c++编程参考程序(一本通51.
    #include<bits/stdc++.h>usingnamespacestd;intmain(){   inti,j,a[6],n;//定义整形变量   for(i=1;i<6;i++)//循环      a[i]=i;   i=1;   cout<<i<<":"<<"";//输出i   for(j=1;j<6;j++)//再循环      cout<......
  • C++String类
    前言大家好,我是jiantaoyab,本篇文章将给大家介绍String类的常用法,和模拟实现String类。String介绍在cplusplus中,对String有着下面的介绍。Thestandardstringclassprovidessupportforsuchobjectswithaninterfacesimilartothatofastandardcontainerofb......
  • C++原子操作与内存序 1
    问题#include<iostream>#include<thread>intmain(){ intsum=0; autof=[&sum](){ for(inti=0;i<10000;i++) sum+=1; }; std::threadt1(f); std::threadt2(f); t1.join(); t2.join(); std::cout<<"thesum......
  • 【c++】类和对象(六)深入了解隐式类型转换
    ......
  • C++: 虚函数,一些可能被忽视的细节
    C++:虚函数,一些可能被忽视的细节引言:关于C++虚函数,对某些细节的理解不深入,可能导致我们的程序无法按预期结果运行,或是表明我们对其基本原理理解不够透彻。本文详细解答以下几个问题:实现多态,忘记写virtual会怎么样?虚函数的默认参数可以重载吗?纯虚函数真的不能有实现吗?析构函数可......
  • C++ 中的 volatile 和 atomic
    C++中的volatile和atomic0.TL;DRstd::atomic用于多线程并发场景,有两个典型使用场景:原子操作:对atomic变量的操作(读/写/自增/自减)仿佛受互斥量保护。一般通过特殊的机器指令实现,比使用互斥量更高效限制编译器/硬件对赋值操作的重新排序volatile和多线程并发没有......
  • C++—vector的介绍及使用 && vector的模拟实现
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录文章目录前言一、vector的介绍及使用1.1vector的介绍1.2vector的使用1.2.1vector的定义1.2.2vectoriterator的使用1.2.3vector空间增长问题1.2.4 vector增删查改1.2.5 vector迭代器......