代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素

一、704. 二分查找

题目链接:https://leetcode.cn/problems/binary-search/description/
文章讲解:https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html
视频讲解:https://www.bilibili.com/video/BV1fA4y1o715

1.1 初见思路

有序数组找目标值–》二分法
二分法需注意点:范围区间,左闭右开 或 左闭右闭

1.2 具体实现

class Solution {public int search(int[] nums, int target) {//左闭右开int left=0;int right = nums.length-1;int mid=0;while(left<right){mid = left+(right-left)/2;if(nums[mid]<target){left=mid+1;}else if(nums[mid]>target){right=mid;}else{return mid;}}return -1;}
}

1.3 重难点

  • while循环的循环条件是< 还是 <=?
  • 给left 和 right 赋值时,是否应该+1,原值,还是-1?
    上述两点重点就在于对 取值区间的选择,左闭右开/左闭右闭
    写二分法,区间的定义一般为两种,左闭右闭即[left, right],或者左闭右开即[left, right)。

对区间的选择的理解
[图片]

二、 27. 移除元素

题目链接:https://leetcode.cn/problems/remove-element/
文章讲解:https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html
视频讲解:https://www.bilibili.com/video/BV12A4y1Z7LP

2.1 初见思路

采用双指针的方式,把所有需要删除的val都移到数组的最后。
左指针指向等于val的值,右指针指向不等于val的值,swap(),同时计数+1,最后返回计数。

2.2 具体实现

class Solution {public int removeElement(int[] nums, int val) {if(nums.length==0){return 0;}int left=0;int right = nums.length-1;while(left<=right){if(nums[left]==val){nums[left]=nums[right];right--;}else{left++;}}return left;}}

2.3 重难点

解题过程中一直无法通过,最终发现问题就出在while的循环条件上!
循环条件是<=

在这里插入图片描述

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

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

相关文章

感染恶意代码之后怎么办?

隔离设备 立即将感染设备与网络隔离&#xff0c;断开与互联网和其他设备的连接。这可以防止恶意代码进一步传播到其他设备&#xff0c;并减少对网络安全的威胁。 确认感染 确认设备是否真的感染了恶意代码。这可能需要使用安全软件进行全面扫描&#xff0c;以检测和识别任何已…

前端实现大文件分片并行上传、断点续传、秒传(完整解析)

一、总体流程图 二、具体步骤 简单理解&#xff1a;前端先将文件切割多份&#xff0c;在进行上传&#xff0c;由后端进行切片合并操作。 具体逻辑&#xff1a; 1. 前端选中上传文件&#xff08;如果是批量上传就把选中的文件存入选中文件列表数组中&#xff0c;后续在遍历上…

【Vue3-Element-Admin 动态路由】涉及到的配置

Vue3-Element-Admin 动态路由 涉及到的配置 0. Vue3-Element-Admin 项目地址1. router/index.ts2. Mock接口模拟数据3. store/permission4. api/menu5. plugins/permission 这篇文章讲的主要是 Vue3-Element-Admin 差不多内置的动态路由配置 (根据后端接口渲染) 先把开发环境&a…

纷享销客一体化BI智能分析平台介绍

纷享销客BI智能分析平台是一款自助式敏捷BI&#xff0c;无缝继承纷享销客PaaS平台的对象数据、对象关系、功能权限体系与数据权限体系&#xff0c;用户通过简单的拖拽点选即可实现灵活定义分析模型和可视化自助分析&#xff0c;零技术门槛快速上手&#xff0c;面向全员各类角色…

深度学习 --- stanford cs231 编程作业(assignment1,Q2: SVM分类器)

stanford cs231 编程作业之SVM分类器 写在最前面&#xff1a; 深度学习&#xff0c;或者是广义上的任何学习&#xff0c;都是“行千里路”胜过“读万卷书”的学识。这两天光是学了斯坦福cs231n的一些基础理论&#xff0c;越往后学越觉得没什么。但听的云里雾里的地方也越来越多…

Python教程-快速入门基础必看课程10-函数基础

该视频主要讲述了Python中函数的定义、使用和返回。函数是Python中一个重要的概念&#xff0c;可以用来封装一段可重复使用的代码&#xff0c;并通过函数名来调用它。在Python中&#xff0c;定义函数的关键字是def&#xff0c;后面跟着函数名和括号。函数可以没有参数&#xff…

【学习笔记】MySQL(Ⅰ)

MySQL(Ⅰ) 1、 介绍 1.1、概述 1.2、MySQL 的优缺点 1.4、关系型数据库模型2、 基础篇 —— SQL(结构化查询语言) 2.1、通用语法 2.2、SQL 语句的分类 2.3、DDL 语句 2.3.1 数据库结构相关的语法 2.3.2 数据表相关的语…

Java实现俄罗斯方块游戏源代码(启动即可玩)

这是一个用Java Swing实现的俄罗斯方块游戏&#xff0c;具有经典的游戏机制和图形界面。游戏中&#xff0c;玩家需要旋转和移动不断下落的方块&#xff0c;使其填满一行来消除该行并得分。 该项目适合学习Java GUI编程、游戏开发基础以及面向对象编程&#xff08;OOP&#xff0…

【Git】分支管理 -- 详解

一、理解分支 分支就是科幻电影里面的平行宇宙&#xff0c;当你正在电脑前努力学习 C 的时候&#xff0c;另一个你正在另一个平行宇宙里努力学习 JAVA。 如果两个平行宇宙互不干扰&#xff0c;那对现在的你也没啥影响。不过&#xff0c;在某个时间点&#xff0c;两个平行宇宙…

【Angew】:催化材料中贵金属的最大效率-原子分散表面铂

图形摘要&#xff1a;通过在纳米结构 CeO2的 {100}“纳米袋”中稳定表面 Pt2物种&#xff08;见图&#xff09; &#xff0c;可以制备具有最高贵金属分散度的Pt-CeO2材料。此类材料可以大大减少催化剂所需的贵金属量。 摘要&#xff1a;贵金属Pt是催化领域用途最广泛的元素&am…

【JS】JS高阶函数——reduce()用法详解总结。你不得不知道的数组reduce高级用法!

reduce用法详解总结 1.reduce语法说明1.1 方法介绍1.2 参数说明1.3 执行机制1.4 简单示例&#xff1a;数组求和 2. 高级用法2.1 权重求和2.2 代替some和every2.3 数组扁平2.4 数组去重2.5 字符统计和单词统计2.6 数组成员特性分组2.7 数字千分化 reduce函数是一个神奇的函数 1.…

LatexEasy:数学排版神器,你值得拥有!

&#x1f31f; 还在为复杂的数学公式排版而烦恼吗&#xff1f;LatexEasy来帮你解决烦恼&#xff01;&#x1f31f; &#x1f4da; 作为一名科研狗或者学术爱好者&#xff0c;你一定知道LaTeX在数学排版中的强大功能。但LaTeX的语法对于初学者来说&#xff0c;总是有些令人望而…

编程奇境:C++之旅,从新手村到ACM/OI算法竞赛大门(竞赛小魔法:万能头文件加速)

如果看到这里的各位是想要参加竞赛&#xff0c;那么接下来一点一些小魔法大家可以修炼一下下。 万能头文件 在那遥远的编程王国&#xff0c;藏着一件传说中的秘宝——bits/stdc.h&#xff0c;这不仅仅是一块普通的头文件石碑&#xff0c;它是C语言魔法的集大成者&#xff0c;…

C++ Qt实现http url启动本地应用程序

更多Qt文章,请访问《深入浅出C++ Qt开发技术专栏》:https://blog.csdn.net/yao_hou/category_9276099.html 我们在使用腾讯会议时经常会通过http链接打开本地的腾讯会议,例如下图: 打开会议发起人给的链接,会出现一个网页,然后点击加入会议就会启动本地的腾讯会议,本篇…

面向小白的 Spark MLlib 入门教学

目标: 介绍 Spark MLlib 框架及其在机器学习中的应用。培养学生基本的数据处理、建模和评估技能,使其能够独立进行简单的机器学习任务。教学大纲: 介绍 Spark MLlib 了解 Apache Spark 和 MLlib。MLlib 的主要功能和优势。演示如何在 Spark 中启动 MLlib。基本概念和环境设置…

msvcp140_1.dll丢失怎么修复,这四种修复方法可轻松搞定

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp140_1.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题&#xff0c;本文将介绍5种常见的解决方法&#xff0c;帮助大家快速恢复应用程序的正常运行。 一&a…

Python函数式编程

Python函数式编程内容不多&#xff0c;熟练使用它们能让代码简洁不少。 Python中的函数式编程强调使用函数作为基本构建块&#xff0c;支持高阶函数、 lambda函数、列表推导式、map()、filter()、reduce()等特性。下面是一些函数式编程的典型例子&#xff1a; 使用 map() 函数…

OCP 备份 OceanBase集群

注:OCP版本为4.2.1,OceanBase版本为 社区版4.2.1.0 手动备份 进行合并 在手动进行备份数据之前&#xff0c;建议进行一次OB集群合并(不影响业务的前提下)&#xff0c;关于合并的概念请参考OB官网。 点击进入要备份的OB集群 点击左侧工具栏中的 合并管理&#xff0c;在 基本信息…

App UI 风格:独具一格,令人惊艳

App UI 风格&#xff1a;独具一格&#xff0c;令人惊艳

交叉导轨在医疗设备上的作用!

随着医疗器械行业的需求逐步增长&#xff0c;交叉导轨给医疗器械行业带来了广阔的发展前景。作为重要的精密传动元件&#xff0c;交叉导轨具有寿命长、高精度、高刚性、高耐腐蚀性和高稳定性等优点&#xff0c;满足精密仪器上对产品的高要求使用场景。 在医疗设备领域中交叉导轨…