当前位置: 首页 > news >正文

代码随想录算法训练营第一天 | 二分查找

文章目录

    • Leetcode704 二分查找
        • 二分法的使用前提:
        • 区间选择
        • 其他注意事项
    • Leetcode27 移除元素
        • 解题思路:
        • 优化思路

Leetcode704 二分查找

链接:https://leetcode.cn/problems/binary-search/
代码随想录: https://programmercarl.com/
时间复杂度: O(logN)
空间复杂度: O(1)

二分法的使用前提:
  1. 没有重复元素
  2. 数据结构是有序排列
区间选择
  1. [left, right]: 此时left == right的条件是有意义的, 在更新左右索引时均取mid_index的下一位
  2. [left, right): 此时循环条件为left < right. 若>= right则超过判断边界, 在更新右索引时取mid的值
其他注意事项
  1. 避免数据溢出: mid_index = left + ((right - left) >> 1), 等同于(right + left) / 2, 但更安全高效
  2. 除以2可以使用移位操作>> 1
int search(vector<int>& nums, int target) {if (nums.empty()) {return -1;}int left = 0, right = nums.size() - 1;while (left <= right) {int mid_index = left + ((right - left) >> 1);int mid_value = nums[mid_index];if (mid_value == target) {return mid_index;} else if (mid_value < target) {left = mid_index + 1;} else {right = mid_index - 1;}}return -1;
}

Leetcode27 移除元素

链接:https://leetcode.cn/problems/remove-element/
时间复杂度: O(N)
空间复杂度: O(1)

解题思路:

双指针法 即一个指针遍历数组, 一个指针指向需要更新的位置
该方法的问题是: 在最坏情况下, 如若开头第一个元素相等, 后续均不等, 则左指针指向的位置也需要更新n-1次. 该种情况下, 需要遍历该序列至多两次.

优化思路
int removeElement(vector<int>& nums, int val) {int val_index = 0;  // 数值索引for (int i = 0; i < nums.size(); i++) {if (nums[i] != val) {if (i != val_index) {  // 减少数据访问和赋值操作nums[val_index] = nums[i];}val_index++;}}return val_index;
}

相关文章:

代码随想录算法训练营第一天 | 二分查找

文章目录 Leetcode704 二分查找二分法的使用前提:区间选择其他注意事项 Leetcode27 移除元素解题思路:优化思路 Leetcode704 二分查找 链接&#xff1a;https://leetcode.cn/problems/binary-search/ 代码随想录: https://programmercarl.com/ 时间复杂度: O(logN) 空间复杂度:…...

python相关知识

1、注释 共有三种&#xff1a;#、 、””” ””” 2、数据类型 整数、浮点、字符串、布尔、列表、元组、集合、字典 num1 666、num2 3.14、t1 True、t2 False、 列表&#xff1a;list [1,2,3,4] 元组&#xff1a;tuple (11,aaa,ddd,3) 字典&#xff1a;dict {li…...

Visual Studio 2022 LNK2001无法解析的外部符号 _wcscat_s 问题记录

ANSI C程序中&#xff0c;用到了wcsrchr、wcsncpy_s、wcscat_s、wcscpy_s等几个字符串函数&#xff0c;但是编译时提示&#xff1a; 错误 LNK2001 无法解析的外部符号 _wcscat_s 查了挺多帖子&#xff0c;没有解决。 https://bbs.csdn.net/topics/250012844 解决VS编译…...

Java高并发处理机制

高并发处理的思路&#xff1a; 扩容&#xff1a;水平扩容、垂直扩容缓存&#xff1a;将基础的数据放入缓存进行处理使用SpringCloud的注册中心&#xff0c;分服务注册到同一个注册中心&#xff0c;服务器检测使用Spring的熔断操作&#xff0c;检测服务器的心跳那个正常随机跳转…...

7 数据存储单位,整型、浮点型、字符型、布尔型数据类型,sizeof 运算符

目录 1 数据类型的分类 2 数据存储单位 2.1 位 2.2 字节 2.3 其余单位 3 整数类型 3.1 基本介绍 3.2 整型的类型 3.2.1 整数类型多样性的原因 3.2.2 整型类型之间的相对大小关系 3.3 整型注意事项 3.4 字面量后缀 3.5 格式占位符 3.6 案例&#xff1a;声明并输出…...

导游职业资格考试真题题库

导游职业资格考试真题题库 80.重庆有"雾都"之称。壁山区的()全年雾日多204天&#xff0c;堪称"世界之最"。 A.枇杷山 B.雾灵山 C.云雾山 D.四姑娘山 答案&#xff1a;C 81.我国最具热带海洋气候特色的地方为&#xff08;&#xff09;。 A.广西壮族…...

【Rust】使用开源项目搭建瓦片地图服务

本文通过获取在线和离线地图数据&#xff0c;使用开源Rust项目搭建瓦片地图服务&#xff0c;并使用DevExpress的MapControl控件使用自建地图服务 获取地图数据 获取地图数据有很多种方式&#xff0c;这里分别用在线和离线地图数据举例说明 在线下载瓦片地图 打开在线瓦片地…...

【面试宝典】mysql常见面试题总结(上)

一、MySQL 中有哪几种锁&#xff1f; MySQL中的锁机制是数据库并发控制的重要组成部分&#xff0c;它用于管理多个用户对数据库资源的访问&#xff0c;确保数据的一致性和完整性。MySQL中的锁可以根据不同的分类标准进行分类&#xff0c;以下是一些常见的分类方式及对应的锁类…...

第1章 初识C语言

第1章 初识C语言 1.1 C语言概述 1.1.1 C语言的发展历史 C语言的原型为ALGOL 60语言&#xff08;也称A语言&#xff09;。 1963年 剑桥大学将ALGOL 60语言发展成为GPL语言。 1967年 剑桥大学的Matin Richards简化GPL&#xff0c;产生了BGPL语言。 1970年 美国贝尔实验室的Ken…...

【考研数学】定积分应用——旋转体体积的计算(一文以蔽之)

目录 一、如何计算旋转体体积&#xff1f;思考一个小例子 二、旋转体体积的二重积分表达式 三、用真题&#xff0c;小试牛刀 定积分的应用中&#xff0c;有一类题是求解旋转体的体积问题。 相较于记忆体积计算公式&#xff0c;有一种通法求解体积更不容易出错&#xff1a;二重…...

PHP移动端商城分销全平台全端同步使用

&#x1f4f1;【掌中购物新纪元&#xff1a;探索移动端购物商城系统的无限魅力】&#x1f6cd;️ &#x1f680; 随时随地&#xff0c;购物自由新体验 在这个快节奏的时代&#xff0c;移动端购物商城系统彻底颠覆了传统购物方式&#xff0c;让消费者享受到了前所未有的便捷与…...

TLE8386-2EL:汽车级DC-DC转换器中文资料书

描述 TLE8386-2EL是一款具有内置保护功能的低端感应升压控制器。该器件的主要功能是将输入电压升高&#xff08;升压&#xff09;到更大的输出电压。开关频率可从100kHz调整至700kHz&#xff0c;并可与外部时钟源同步。 TLE8386-2EL的独特功能可将关断电流消耗降至 <2μA。该…...

EasyRecovery17中文mac苹果电脑版数据恢复软件 永久免费破解版下载

&#x1f389; 数据丢失不再是噩梦&#xff01;EasyRecovery17中文版来拯救你的硬盘啦&#xff01; 各位小伙伴们&#xff0c;有没有遇到过重要文件一不小心就消失无踪的尴尬情况&#xff1f;别担心&#xff0c;今天就给大家种草一款神奇的工具——EasyRecovery17中文版&#x…...

Ubuntu 22.04 安装 VirtualBox7

Ubuntu默认库为VirtualBox-6版本 # 安装 VirtualBox-6 sudo apt update sudo apt install virtualbox# 卸载 VirtualBox-6 sudo apt remove --purge --auto-remove virtualbox virtualbox-6.1 1. 安装 VirtualBox-7 # 导入软件包密钥 curl https://www.virtualbox.org/downl…...

NPM使用教程:从入门到精通

NPM使用教程&#xff1a;从入门到精通&#xff0c;掌握Node.js包管理神器 引言 随着Node.js的流行&#xff0c;JavaScript已经成为服务器端开发的主力军。NPM&#xff08;Node Package Manager&#xff09;作为Node.js的官方包管理工具&#xff0c;为开发者提供了一个庞大的代…...

模电实验3 - 单电源集成运放交流耦合放大器

实验目标 学习集成运放的单电源使用。掌握交流耦合单电源集成运放放大器的测试方法。了解交流耦合单电源集成运放放大器的特点。 实验器材 ADALM2000 1kΩ 电阻 (1/4 W) x 1 10 kΩ 电阻 (1/4 W) x 1 100kΩ 电阻 (1/4 W) x 3 0.1μF电容 x 1 1μF电容 …...

海对外经贸大学学报

《上海对外经贸大学学报》创刊于1994年&#xff0c;原名为《世界贸易组织动态与研究》(上海对外贸易学院学报)&#xff0c;随原上海对外贸易学院更名为上海对外经贸大学&#xff0c;自2014年起更为现名&#xff0c;现为综合性社科类双月刊&#xff0c;为中文社会科学引文检索&a…...

数字化营销在公域场景中的无限可能

在如今的商业领域&#xff0c;公域场景为企业提供了广阔的发展空间&#xff0c;而数字化营销则成为了企业在这些场景中脱颖而出的关键利器。 ​ 一、电商平台营销 当企业在淘宝、京东等大型电商平台开设店铺&#xff0c;数字化营销便开始大显身手。 企业不仅能踊跃参与像双十…...

聚观早报 | 一加13配置细节曝光;谷歌首推人工智能手机

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 8月15日消息 一加13配置细节曝光 谷歌首推人工智能手机 MONA M03汽车即将上市 iPhone SE 4将升级8GB运行内存 R…...

C++ 11相关新特性(lambda表达式与function包装器)

目录 lambda表达式 引入 lambda表达式介绍 lambda表达式捕捉列表的传递形式 lambda表达式的原理 包装器 包装器的基本使用 包装器与重载函数 包装器的使用 绑定 C 11 新特性 lambda表达式 引入 在C 98中&#xff0c;对于sort函数来说&#xff0c;如果需要根据不同的比较方式实现…...

Qt+OpenCV+海康SDK实战:多线程回调架构下的实时视频流解码与Mat转换全流程解析

1. 项目背景与核心挑战 在智能安防和视频监控领域&#xff0c;实时视频流处理一直是技术难点。传统方案往往面临三个关键问题&#xff1a;视频流延迟高、解码效率低下、跨平台兼容性差。这正是我们选择QtOpenCV海康SDK技术栈的原因——Qt提供跨平台GUI支持&#xff0c;OpenCV负…...

别再为小Batch Size发愁了!手把手教你用Group Normalization稳定训练你的PyTorch模型

别再为小Batch Size发愁了&#xff01;手把手教你用Group Normalization稳定训练你的PyTorch模型 当你在训练深度学习模型时&#xff0c;是否遇到过这样的困境&#xff1a;由于GPU显存限制&#xff0c;只能使用较小的batch size&#xff0c;结果模型训练变得极不稳定&#xff…...

当I2C总线卡死时我们在debug什么:从复位异常到多设备冲突的故障树分析

当I2C总线卡死时我们在debug什么&#xff1a;从复位异常到多设备冲突的故障树分析 I2C总线作为嵌入式系统中广泛使用的通信协议&#xff0c;其简洁的两线制设计&#xff08;SCL时钟线与SDA数据线&#xff09;背后隐藏着复杂的硬件交互逻辑。当系统突然出现I2C通信失败、设备无响…...

Qwen3字幕生成工具实战:快速处理会议录音,输出带时间戳字幕

Qwen3字幕生成工具实战&#xff1a;快速处理会议录音&#xff0c;输出带时间戳字幕 1. 会议录音转字幕的痛点与解决方案 处理会议录音是许多职场人士的日常任务。传统方法需要先听录音&#xff0c;再手动记录内容&#xff0c;最后还要逐句对齐时间轴&#xff0c;整个过程耗时…...

实时手机检测-通用实战案例:手机质检报告自动生成系统集成方案

实时手机检测-通用实战案例&#xff1a;手机质检报告自动生成系统集成方案 1. 引言&#xff1a;从人工质检到智能报告的跨越 想象一下&#xff0c;在一个大型手机生产线上&#xff0c;质检员每天需要手动检查成千上万张手机外观照片&#xff0c;寻找划痕、污渍、装配瑕疵。这…...

BilibiliDown完整指南:三步掌握B站视频批量下载技巧

BilibiliDown完整指南&#xff1a;三步掌握B站视频批量下载技巧 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi/…...

OpenSSL实战:手把手教你创建自签名根证书

1. 为什么需要自签名根证书&#xff1f; 想象一下你正在搭建一个内部测试环境&#xff0c;或者为公司的内部系统建立一套专属的安全通信机制。这时候你会发现&#xff0c;所有涉及HTTPS的环节都需要SSL/TLS证书。如果直接购买商业CA颁发的证书&#xff0c;不仅成本高&#xff…...

Cadence 17.4 PCBEditor 中文菜单设置保姆级教程(含环境变量配置与补丁号查看)

Cadence 17.4 PCBEditor 中文界面配置全攻略&#xff1a;从环境变量到实战技巧 刚接触Cadence Allegro的工程师常被其全英文界面劝退。其实从17.4版本开始&#xff0c;PCBEditor已内置中文支持&#xff0c;只是需要一些"隐藏操作"来激活。本文将手把手带你完成从补丁…...

IBM System/4 Pi:航空航天计算机的兴衰与技术传奇

【导语&#xff1a;1981 年航天飞机首飞&#xff0c;其发射和大部分飞行环节由 IBM 的 System/4 Pi 系列 AP - 101B 计算机控制。该系列于 1967 年推出&#xff0c;广泛应用于航空航天等领域&#xff0c;虽发挥重要作用&#xff0c;但相关信息却较难获取。】System/4 Pi&#x…...

Ollama部署LFM2.5-1.2B-Thinking:从CSDN文档到实际调用的完整链路

Ollama部署LFM2.5-1.2B-Thinking&#xff1a;从CSDN文档到实际调用的完整链路 1. 认识LFM2.5-1.2B-Thinking模型 LFM2.5-1.2B-Thinking是一个专门为设备端部署设计的智能文本生成模型。这个模型属于LFM2.5系列&#xff0c;是在LFM2架构基础上通过扩展预训练和强化学习进一步优…...