代码随想录算法训练营第一天

● 今日学习的文章链接和视频链接

● 自己看到题目的第一想法

1. 704二分法:

方法一:
整个数组是 左闭右闭区间 [ ]

  1. left指针指向数组开始下标, right 指针指向数组最后下表nums.size()-1, mid为 (left+right) /2
  2. 循环条件 left<=right
  3. nums[mid] <target 右移left left = mid+1
    nums[mid] > target 左移right right = mid-1
    nums[mid] = target 返回 mid
    找不到 返回 -1

方法二:
整个数组是 左闭右开区间 [ )

  1. left指针指向数组开始下标, right 指针指向数组最后下表nums.size(), mid为 (left+right) /2
  2. 循环条件 left< right
  3. nums[mid] <target 右移left left = mid+1
    nums[mid] > target 左移right right = mid
    nums[mid] = target 返回 mid
    找不到 返回 -1
2.注意:区间边界问题

整个数组是 左闭右闭区间 [ ]
整个数组是 左闭右开区间 [ )

3.具体代码

方法一:

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

在这里插入图片描述
方法二:

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

在这里插入图片描述

2. 27移除元素

思路

方法一:双指针

  1. 定义下标 快指针fast , 慢指针slow
  2. 循环条件 fast <= nums.size()-1
  3. nums[fast] == val 则fast++;
    nums[fast] != val 则 nums[slow] = nums[fast], slow++, fast++;
    slow最终指向没有val值 数组最后一个元素的下标。

方法二:
4. 定义left =0 right =nums.size()-1
5. 循环条件 left<=right
6. 左边找到nums[left]==val 的下标
右边找到nums[right] !=val 的下标
交换 nums[left] =nums[right] left++; right–;
结果: return left;

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

在这里插入图片描述

注意

slow指:更新后 新数组下标
fast 指:寻找新数组的元素

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

在这里插入图片描述

● 看完代码随想录之后的想法

● 自己实现过程中遇到哪些困难

● 今日收获,记录一下自己的学习时长

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

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

相关文章

小折叠也能成为主力机,全新小折叠旗舰华为Pocket 2正式发布

2024年2月22日&#xff0c;华为在三亚举办华为Pocket 2时尚盛典&#xff0c;正式发布其全新小折叠旗舰华为Pocket 2。一直以来&#xff0c;华为致力于萃取各界艺术灵感&#xff0c;不断探寻科技美学的可能性&#xff0c;华为Pocket系列更是秉承将奢雅美学与尖端科技融为一体的理…

探索Redis是否为单线程的奥秘(文末送书)

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. Redis中的多线程二. I/O多线程三. Redis中的多进程四. 结论五. 书籍推荐5.1 书…

第一个Qt程序中的秘密

创建第一个程序 首先我们打开Qt Creator 打开文件->New Projects... 菜单&#xff0c;创建我们的第一个Qt项目 选择 Qt Widgets Application&#xff0c;点击选择...按钮 之后&#xff0c;输入项目名称QtLearning&#xff0c;并选择创建路径&#xff0c; 在build system中选…

ConnectWise ScreenConnect 身份验证绕过漏洞复现可RCE(CVE-2024-1709)

0x01 产品简介 ConnectWise ScreenConnect ,是一款自托管的远程桌面软件应用,该款软件允许用户自行托管,可以在自己的服务器、个人电脑、虚拟机或虚拟专用服务器上运行。 0x02 漏洞概述 ConnectWise ScreenConnect低于23.9.8 版本的产品中,SetupWizard.aspx接口处存在身…

[newstarctf2023] --RE wp

AndroGenshin: rc4加密表&#xff0c;base64换表&#xff1a; 脚本梭就行 python username b"genshinimpact" base64_table [125, 239, 101, 151, 77, 163, 163, 110, 58, 230, 186, 206, 84, 84, 189, 193, 30, 63, 104, 178, 130, 211,164, 94, 75, 16, 32, 33…

发布 rust 源码包 (crates.io)

rust 编程语言的包 (或者 库, library) 叫做 crate, 也就是软件中的一个组件. 一个完整的软件通常由多个 crate 组成, rust 编译器 (rustc) 一次编译一整个 crate, 不同的 crate 可以同时并行编译. rust 官方有一个集中发布开源包的网站 crates.io. 发布在这上面的 crate 可以…

vue3框架组件自动导入unplugin-vue-components

1.安装 npm i unplugin-vue-components -save-dev 2.配置 我这里用的是Vue CLI&#xff0c;所以要在vue.config.js文件中添加配置&#xff0c;官网中有写不同打包工具的配置写法 框架我使用的是Element Plus&#xff0c;使用前去官网查看自己的框架是否支持&#xff0c;主流…

LLM之RAG实战(二十七)| 如何评估RAG系统

有没有想过今天的一些应用程序是如何看起来几乎神奇地智能的&#xff1f;这种魔力很大一部分来自于一种叫做RAG和LLM的东西。把RAG&#xff08;Retrieval Augmented Generation&#xff09;想象成人工智能世界里聪明的书呆子&#xff0c;它会挖掘大量信息&#xff0c;准确地找到…

电脑黑屏什么都不显示怎么办 电脑开机黑屏不显示任何东西的4种解决办法

相信有很多网友都有经历电脑开机黑屏不显示任何东西&#xff0c;找了很多方法都没处理好&#xff0c;其实关于这个的问题&#xff0c;首先还是要了解清楚开机黑屏的原因&#xff0c;才能够对症下药&#xff0c;下面大家可以跟小编一起来看看怎么解决吧 电脑开机黑屏不显示任何…

【无刷电机学习】基础概念及原理介绍(持续更新中...)

目录&#xff08;2024.02.22版&#xff09; 1 定义 2 各种电机优势比较 2.1 有刷与无刷比较 2.2 交流与直流比较 2.3 内转子与外转子比较 2.4 低压BLDC的一些优点 3 基本原理 3.1 单相无刷电机 3.2 三相无刷电机 4 驱动方法 4.1 六步换相控制 4.1.1 基本原理 4…

突发!AI独角兽「竹间智能」被曝停工停产6个月

大家好我是二狗。 今天早上起来刷朋友圈&#xff0c;看到一张截图——AI创企竹间智能&#xff0c;宣称因为公司所处的经营环境艰难&#xff0c;部分部门和岗位将从即日起停工停产6个月。 图源&#xff1a;&#xff08;企服科学&#xff09; 下面是文字版&#xff1a; 由于公司…

Linux网络编程(三-UDP协议)

目录 一、UDP概述 二、UDP的首部格式 三、UDP缓冲区 四、基于UDP的应用层协议 五、常见问题 一、UDP概述 UDP(User Datagram Protocol&#xff0c;用户数据协议报)是传输层协议&#xff0c;提供不可靠服务&#xff0c;其特点包括&#xff1a; 无连接&#xff1a;知道对端…

CSP-202309-3-梯度求解

CSP-202309-3-梯度求解 作为一个算法小白&#xff0c;本人第一次接触大模拟的题&#xff0c;本题的算法参考自&#xff1a;【CSP】202309-3 梯度求解 解题思路 1.输入处理 getchar();&#xff1a;从标准输入读取一个字符。这里它的作用可能是用来“吃掉”&#xff08;消耗&a…

Kafka_04_Topic和日志

Kafka_04_Topic和日志 Topic/PartitionTopicPartition 日志存储存储格式日志清理删除压缩 Topic/Partition Topic/Partition: Kafka中消息管理的基础单位 Topic和Partition并不实际存在(仅逻辑上的概念) 如: Topic和Partition关系 // 每个日志文件可对应多个日志分段, 其还可…

缓存篇—缓存击穿

在很多场景下&#xff0c;我们的业务通常会有几个数据会被频繁地访问&#xff0c;比如秒杀活动&#xff0c;这类被频地访问的数据被称为热点数据。 如果缓存中的某个热点数据过期了&#xff0c;此时大量的请求访问了该热点数据&#xff0c;就无法从缓存中读取&#xff0c;直接…

《UE5_C++多人TPS完整教程》学习笔记22 ——《P23 记录加入的玩家(Couting Incoming Players)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P23 记录加入的玩家&#xff08;Couting Incoming Players&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&#xff…

如何使用Docker部署MongoDB并结合内网穿透实现远程访问本地数据库

文章目录 前言1. 安装Docker2. 使用Docker拉取MongoDB镜像3. 创建并启动MongoDB容器4. 本地连接测试5. 公网远程访问本地MongoDB容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 …

2024最佳住宅代理IP服务商有哪些?

跨境出海已成为了近几年的最热趋势&#xff0c;大批量的企业开始开拓海外市场&#xff0c;而海外电商领域则是最受欢迎的切入口。新兴的tiktok、Temu&#xff0c;老牌的Amazon、Ebay&#xff0c;热门的Etsy、Mecari等等都是蓝海一片。跨境入门并不难&#xff0c;前期的准备中不…

Spring Boot打war包部署到Tomcat,访问页面404 !!!

水善利万物而不争&#xff0c;处众人之所恶&#xff0c;故几于道&#x1f4a6; 文章目录 Spring Boot打war包部署到Tomcat&#xff0c;访问页面404 &#xff01;&#xff01;&#xff01;解决办法&#xff1a;检查Tomcat版本和Jdk的对应关系&#xff0c;我的Tomcat是6.x&#x…

Sping基础篇----掌握Sping的控制反转/依赖注入的概念【实战案例总结】

作为一名对技术充满热情的学习者&#xff0c;我一直以来都深刻地体会到知识的广度和深度。在这个不断演变的数字时代&#xff0c;我远非专家&#xff0c;而是一位不断追求进步的旅行者。通过这篇博客&#xff0c;我想分享我在某个领域的学习经验&#xff0c;与大家共同探讨、共…