随想录一刷·数组part1

news2024/11/25 1:56:15

在这里插入图片描述

你好,我是安然无虞。

文章目录

  • 1. 二分查找题型
  • 2. 移除元素题型

1. 二分查找题型

二分查找·传送门

class Solution {
public:
    int search(vector<int>& nums, int target) 
    {
        // 在有序数组中查找第一时间想到二分查找
        int left = 0, right = nums.size() - 1; // 左闭右闭
        
        while(left <= right)
        {
            int mid = left + (right - left) / 2; // 防止溢出

            if(nums[mid] < target)
            {
                left = mid + 1;
            }
            else if(nums[mid] > target)
            {
                right = mid - 1;
            }
            else if(nums[mid] == target)
            {
                return mid;
            }
        }

        return -1;
    }
};

题目拓展:

  1. 搜索插入位置
截屏2023-10-25 23.35.27
class Solution {
public:
  
  	// 注意对于本题的理解
    int searchInsert(vector<int>& nums, int target) 
    {
        int left = 0, right = nums.size(); // 左闭右开

        // 搜索左侧边界
        while(left < right)
        {
            int mid = left + (right - left) / 2;

            if(nums[mid] == target)
            {
                // 收缩右侧边界
                right = mid;
            }
            else if(nums[mid] < target)
            {
                left = mid + 1;
            }
            else if(nums[mid] > target)
            {
                right = mid;
            }
        }

        return left;
    }
};
  1. 在排序数组中查找元素的左右边界
class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) 
    {
        // 搜索左右边界
        int left = searchLeft(nums, target);
        int right = searchRight(nums, target);

        return {left, right};
    }

    // 搜索左侧边界
    int searchLeft(vector<int>& nums, int target)
    {
        int left = 0, right = nums.size() - 1; // 左闭右闭

        while(left <= right)
        {
            int mid = left + (right - left) / 2;

            if(nums[mid] == target)
            {
                // 收缩右侧边界
                right = mid - 1;
            }
            else if(nums[mid] < target)
            {
                left = mid + 1;
            }
            else if(nums[mid] > target)
            {
                right = mid - 1;
            }
        }

        // 注意判断
        if(left >= nums.size() || nums[left] != target)
        {
            return -1;
        }

        return left;
    }

    // 搜索右侧边界
    int searchRight(vector<int>& nums, int target)
    {
        int left = 0, right = nums.size() - 1;

        while(left <= right)
        {
            int mid = left + (right - left) / 2;

            if(nums[mid] == target)
            {
                // 收缩左侧边界
                left = mid + 1;
            }
            else if(nums[mid] < target)
            {
                left = mid + 1;
            }
            else if(nums[mid] > target)
            {
                right = mid - 1;
            }
        }

        if(right < 0 || nums[right] != target)
        {
            return -1;
        }

        return right;
    }
};

2. 移除元素题型

移除元素·传送门

class Solution {
public:
    int removeElement(vector<int>& nums, int val) 
    {
        // 定义快慢指针, fast在前面探路,遇到值不为val的元素就赋给slow
        int slow = 0, fast = 0;

        while(fast < nums.size())
        {
            if(nums[fast] != val)
            {
                nums[slow] = nums[fast];
                slow++;
            }
            fast++;
        }

        return slow;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1161605.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

似乎我养的这只猫可能正能犯二

真的会有弱智猫吗&#xff1f;请问&#xff0c;我家小猫天天跑酷发疯 然后不停的撞到头还撞的哐哐响&#xff0c;就刚刚五分钟以内她已经撞了七八次头了&#xff0c;我真觉得她有点不聪明。 我刚准备上卫生间&#xff0c;然后扭头看一下它&#xff0c;它看我回过头来然后就赶紧…

【致远】致远OA取消个人空间显示。

【问题需求】 使用致远系统OA软件过程中&#xff0c;由于公司各个部门有对应的空间布局。 所以想要各个部门人员登陆后&#xff0c;默认对应部门空间。 但是所有人登录后&#xff0c;都会默认为个人空间。 虽然在首页设置–导航设置中&#xff0c;可以将个人空间取消显示&#…

5个最流行的文本生成纹理AI工具

在线工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D场景编辑器 拥抱文本生成纹理AI模型改变游戏规则的力量&#xff0c;人工智能驱动的创新彻底改变了游戏开发中的资产创建。 这些出色的工具可将书面描述转换…

数据抽样技术全面概述

抽样是研究和数据收集中不可或缺的方法&#xff0c;能够从更大数据中获得有意义的见解并做出明智的决定的子集。不同的研究领域采用了不同的抽样技术&#xff0c;每种技术都有其独特的优点和局限性。本文将深入探讨了最常见的抽样技术&#xff0c;包括随机抽样、分层抽样、系统…

界面控件DevExtreme v23.1新版亮点 - 数据层、可访问性功能升级

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuery&#xff0c;Knockout等&#xff09;构建交互式的Web应用程序。从Angular和Reac&#xff0c…

【Servlet】 一

本文主要介绍了如何在tomcat部署一个webapp 以及 如何借助maven用servlet编写一个hello world . 一.Tomcat Tomcat是一个Java里广泛使用的http服务器 HTTP服务器有很多实现&#xff0c;其中最知名的是Nginx&#xff1b;而在Java里&#xff0c;最知名的是Tomcat 一个Tomcat服务…

mysql数据库【基础】

本教程适合有一定基础的人&#xff0c;我是用来复习mysql数据&#xff0c;跟着教程走一遍熟悉一下mysql的语句 数据准备 下面的数据库查询语句都是基于此表进行查询的 员工表 创建表&#xff1a; -- 创建表 drop table if exists emp; create table emp (id int …

vue基于ElementUI/Plus自定义的一些组件

vue3-my-ElementPlus 源码请到GitHub下载使用MyTable、MySelect、MyPagination 置顶|Top | 使用案例&#xff1a; 1.0 定义表格数据&#xff08;测试使用&#xff09; data() {return {tableData: [],value:[],valueList: [],}; },// 构造表格测试数据// 1 第一行&#xf…

什么是 Windows 时间服务?

文章目录 Windows时间服务概述Windows时间服务包括的组件Windows时间服务&#xff08;W32Time&#xff09;时间同步协议时间服务器时间配置事件日志 时间协议的重要性推荐阅读 Windows时间服务概述 Windows 时间服务 (W32Time) 为计算机提供网络时钟同步&#xff0c;默认无需进…

09 _ 队列:队列在线程池等有限资源池中的应用

我们知道,CPU资源是有限的,任务的处理速度与线程个数并不是线性正相关。相反,过多的线程反而会导致CPU频繁切换,处理性能下降。所以,线程池的大小一般都是综合考虑要处理任务的特点和硬件环境,来事先设置的。 当我们向固定大小的线程池中请求一个线程时,如果线程池中没…

uniapp使用抖音微信自定义组件

tt.vue中使用video-player组件 用到的目录如下&#xff1a; pages.json {"path": "pages/Tabbar/tt/tt","style": {"navigationBarTitleText": "","enablePullDownRefresh": false,// 使用自定义组件"using…

基于springboot实现在线考试平台项目【项目源码+论文说明】

基于springboot实现在线考试平台管理系统演示 摘要 网络的广泛应用给生活带来了十分的便利。所以把在线考试管理与现在网络相结合&#xff0c;利用java技术建设在线考试系统&#xff0c;实现在线考试的信息化。则对于进一步提高在线考试管理发展&#xff0c;丰富在线考试管理经…

python脚本-探查存活主机

python脚本-探查存活主机 代码 from scapy.all import * import logging logging.getLogger("scapy.runtime").setLevel(logging.ERROR) net"10.9.47." # 此处修改目标网段 for host in range(1,255):ipf"{net}{host}"# print(f"[-]Trin…

API接口的定义|电商API接口的接入测试和参数说明【附代码实例教程】

一 . API接口的定义 API全称Application Programming Interface&#xff0c;即应用程序编程接口&#xff0c;是一些预先定义的函数&#xff0c;或指软件系统不同组成部分衔接的约定&#xff0c;用于传输数据和指令&#xff0c;使应用程序之间可以集成和共享数据资源。 简单来…

CFCA证书

1&#xff0c;什么是CFCA证书&#xff1f; CFCA证书是中国金融认证中心颁发的数字证书&#xff0c;用于验证网络通信中的身份和数据完整性。它采用了公钥基础设施&#xff08;PKI&#xff09;技术&#xff0c;能够为用户和服务提供商提供可信的身份认证和数据加密服务&#xf…

污水处理环保设备怎么选

要选择合适的污水处理环保设备&#xff0c;可以考虑以下几个方面&#xff1a; 1. 根据自身的项目需求来设定预算&#xff0c;不要盲目追求大型或昂贵的设备&#xff0c;符合项目要求的设备才是最合适的选择。 2. 注意设备所使用的材质&#xff0c;通常情况下&#xff0c;碳钢…

JSON比较:如何轻松判断数据格式是否相同?

目录 一、JSON概述 二、比较JSON数据格式的必要性 三、比较JSON数据格式的方法 1. 基于字符串的比较 2. 基于结构的比较 四、注意事项 五、总结 本文将深入探讨如何判断两个JSON数据格式是否相同。我们将介绍JSON的基本概念&#xff0c;探讨比较JSON数据格式的必要性&am…

lua-resty-request库写入爬虫ip实现数据抓取

根据提供的引用内容&#xff0c;正确的库名称应该是lua-resty-http&#xff0c;而不是lua-resty-request。使用lua-resty-http库可以方便地进行爬虫&#xff0c;需要先安装OpenResty和lua-resty-http库&#xff0c;并将其引入到Lua脚本中。然后&#xff0c;可以使用lua-resty-h…

从「码农」到管理者,E人程序员的十年蜕变

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 当我们谈论程序员创业时&#xff0c;常常会首先想到一些传统观念认为的挑战&#xff1a;沟通技巧不佳、逻…