【力扣算法题】每天一道,健康生活

2024年10月8日
参考github网站:代码随想录

1.二分查找

leetcode
视频

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

核心是边界处理

以左右均为闭区间为例:

第一个点是while循环中left是可以等于right的,因为[1,1]仍然有意义,否则就是丢情况;

第二个点是在进行左右两个区间分割的时候,是将middle-1传递给right或middle+1传递给left,如果将middle传递,是因为区间是闭区间,middle是被包含的,但是middle一定不是target的目标值(nums[middle] > target)。相反在左闭右开区间,开区间的部分就是传递middle了。

2.移除数组元素(快慢指针)

leetcode
视频
在牛客上遇见过,当时用的暴力求解:

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

思路上就是外层循环遍历每个元素,找到目标元素后内层循环依次向前替换位置。
但是这里有个问题:for (int j = i + 1;…),如果是j=i,那么后面nums存在j+1造成数组超限。

快慢指针的方法:
两个指针一个fast,一个slow,分别有自己的职责。
快指针查找目标值(找寻新数组元素),慢指针查找指向更新的位置。

class Solution {
public:int removeElement(vector<int>& nums, int val) {int size = nums.size();int slow = 0;for(int fast = 0; fast < size; fast++){if(val != nums[fast]){nums[slow++] = nums[fast];}}return slow;}
};

快指针在for循环中不停下,一直走到头;慢指针当快指针找到目标元素的时候停下不动,确定好交换的初始位置(尤其是遇到连续两个目标元素的时候!!)。

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

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

相关文章

字节跳动青训营开始报名了!

关于青训营&#xff1a; 青训营是字节跳动技术团队发起的技术系列培训 &人才选拔项目;面向高校在校生&#xff0c;旨在培养优秀且具有职业竞争力的开发工程师。 本次技术训练营由掘金联合豆包MarsCode 团队主办课程包含前端、后端和 A 方向&#xff0c;在这个飞速发…

盲拍合约:让竞拍更公平与神秘的创新解决方案

目录 前言 一、盲拍合约是什么&#xff1f; 二、盲拍合约工作原理 1、合约创建与初始化 2、用户出价&#xff08;Bid&#xff09; 3、出价结束 4、披露出价&#xff08;Reveal&#xff09; 5、处理最高出价 6、结束拍卖 7、退款与提款 三、解析盲拍合约代码…

adum1201数字隔离器中文资料与应用

ADuM1201是ADI公司推出的一款数字隔离器&#xff0c;其典型应用有工业自动化、通讯电源管理、医疗设备以及汽车等领域。本文将对ADuM1201数字隔离器进行详细的介绍和应用分析&#xff0c;以帮助读者更好地了解和使用该产品。 一、ADuM1201数字隔离器概述 1、基本参数 ADuM120…

达梦DBLINK访问ORACLE配置方法

目录 1、概述 2、测试环境 3、语法简介 4、配置访问DM的DBLINK 5、配置访问ORACLE的DBLINK 5.1 通过OCI配置 5.2 通过ODBC配置 1、概述 本文介绍了达梦DBLINK的配置方法。有3部分内容&#xff0c;1&#xff09;达梦访问到达梦的配置方法&#xff1b;2&#xff09;通过OC…

LabVIEW程序怎么解决 Bug?

在LabVIEW开发过程中&#xff0c;发现和解决程序中的Bug是确保系统稳定运行的关键环节。由于LabVIEW采用图形化编程方式&#xff0c;Bug的排查和处理与传统编程语言略有不同。以下是解决LabVIEW程序中Bug的常见方法和技巧&#xff0c;涵盖从问题发现到解决的多个步骤和角度&…

php常用的注释符号

如果没有安装vscode和小皮&#xff0c;请点击下方链接安装&#xff1a; Vscode、小皮面板安装-CSDN博客 在学习php过程中&#xff0c;肯定少不了注释&#xff0c;也可以理解为备注的信息&#xff0c;来提醒自己这段代码有什么用&#xff0c;是什么意思等&#xff0c;接下来就介…

Android Studio Koala Feature Drop 稳定版现已推出

作者 / Android Studio 产品经理 Sandhya Mohan Android Studio Koala Feature Drop (2024.1.2) 现已推出&#xff01;&#x1f428; &#x1f517; Android Studio https://developer.android.google.cn/studio 今年早些时候&#xff0c;我们宣布每个 Android Studio 动物版本…

秋天来临,猫咪又到换毛季,掉毛严重怎么办?宠物空气净化器有用吗?

秋天到了&#xff0c;新一轮的宠物换毛季又来了。谁能想到这只胖猫和之前刚接回来时的皮包骨小猫是同一只&#xff01;除了养了一年长了些肉外&#xff0c;更多的都是换毛季掉毛”膨胀“的。每天下班回家都要搞卫生&#xff0c;家里衣服上、地板上&#xff0c;目光所及之处都有…

跟《经济学人》学英文:2024年10月05日这期 Workouts for the face are a growing business

Workouts for the face are a growing business They may not help much in the quest for eternal youth 原文&#xff1a; The FaceGym studio in central London looks more like a hair salon than a fitness studio. Customers recline on chairs while staff pummel t…

Django-rest-framework(DRF)怎么使用redis

一、redis作用 Redis&#xff0c;作为一款开源的内存数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。以下是Redis的主要作用&#xff1a; 1、高速缓存 Redis能够极大地加速数据的读取速度&#xff0c;因为它将数据存储在内存中通过缓存热点数据&#xff…

若依项目搭建(黑马经验)

欢迎你搜索和了解到若依&#xff0c;这个项目是从黑马课程的一个实践&#xff0c;更多的项目经历和平台搭建期待着我们的共同学习&#xff01; 关于若依 若依是一套全部开源的快速开发平台&#xff0c;毫无保留给个人及企业免费使用。 前端采用Vue、Element UI。后端采用Sprin…

技术分享 —— JMeter接口与性能测试实战!

前言 在软件开发和运维过程中&#xff0c;接口性能测试是一项至关重要的工作。JMeter作为一款开源的Java应用&#xff0c;被广泛用于进行各种性能测试&#xff0c;包括接口性能测试。本文将详细介绍如何使用JMeter进行接口性能测试的过程和步骤。 JMeter是Apache组织开发的基…

JavaGuide(3)

一、项目背景与简介 JavaGuide由GitHub用户Snailclimb开发并维护&#xff0c;是一个全面而深入的Java学习资源库。它旨在为Java初学者和有经验的开发者提供一个系统的学习路径和丰富的资源&#xff0c;帮助他们系统地学习和巩固Java及相关技术知识。 二、项目内容与特点 Jav…

Unity实现自定义图集(四)

以下内容是根据Unity 2020.1.0f1版本进行编写的   在之前的篇章中已经把自定义图集在编辑器上的使用,以及运行时所需的信息都准备好了,接下来就是魔改UGUI的Image组件,使其能够像Image那样运行时如果引用的资源有打自定义图集,则加载对应自定义图集的Texture。 1、思路 …

Maven 入门详解

在 Java 世界中&#xff0c;项目依赖管理就像是一张错综复杂的网&#xff0c;稍有不慎就会陷入 “依赖地狱”。而 Maven&#xff0c;就像一位经验丰富的"项目经理"&#xff0c;为我们提供了一套标准化的项目管理方案&#xff0c;将混乱的依赖关系梳理得井井有条。 1.…

IDM6.42下载器最新版本,提速你的网络生活!

&#x1f680;【速度与激情&#xff0c;IDM 6.42来袭&#xff01;】&#x1f4a3; Hey, 亲爱的下载达人们&#xff01;&#x1f44b; 今天我要给你们安利一个神器——Internet Download Manager&#xff08;简称IDM&#xff09;&#xff0c;版本6.42&#xff0c;这可不是普通的…

k8s为什么用Calico

‌Calico是一种开源的网络和安全解决方案&#xff0c;主要用于容器、虚拟机、宿主机之间的网络连接。‌ 它支持Kubernetes、OpenShift、Docker EE、OpenStack等PaaS或IaaS平台&#xff0c;提供高效的网络通信和安全控制功能‌12。 Calico的核心组件包括Felix、etcd、BIRD等。F…

leetcode 22.括号生成

思路&#xff1a;dfs回溯 其实这道题看起来很像栈&#xff0c;但考虑到多种可能方案输出&#xff0c;我们需要用dfs来做。 乍一看好像没啥思路。我们可以从括号的特点入手&#xff0c;括号我们知道都是成对存在的&#xff0c;那么无论多少对括号&#xff0c;其实第一个符号肯…

数据结构(排序)

1概述 一、定义 排序是将一组数据元素按照某个关键字的值递增或递减的次序重新排列的过程。这个关键字是数据元素中的某个数据项&#xff0c;通过比较关键字的大小来确定数据元素的先后顺序。 二、目的 便于查找 例如在一个有序数组中查找某个元素&#xff0c;使用二分查找等算…

DeepACO:用于组合优化的神经增强蚂蚁系统解决TSP问题的代码阅读

总体概括 DeepACO与普通ACO不同的是将问题输入实例输入到一个训练的网络中&#xff0c;将网络训练成为一个类似于专家知识的模块&#xff0c;可以生成相应的启发式矩阵网络&#xff0c;从而省去相应的专家知识。 其中在训练网络的代码中&#xff1a; 是进行监督式训练通过trai…