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

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

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

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值 数组最后一个元素的下标。
注意

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.rhkb.cn/news/261135.html

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

相关文章

【程序员英语】【美语从头学】初级篇(入门)(笔记)Lesson 15 At the Department Store 在百货商店

《美语从头学初级入门篇》 注意&#xff1a;被 删除线 划掉的不一定不正确&#xff0c;只是不是标准答案。 文章目录 Lesson 15 At the Department Store 在百货商店会话A会话B笔记 Lesson 15 At the Department Store 在百货商店 会话A A: Can you help me, please? B: Sur…

nginx 日志改为json格式

nginx 日志改为json格式 场景描述效果变更旧样式新样式 场景描述 正常使用nginx时&#xff0c;使用默认的日志输出格式&#xff0c;对于后续日志接入其他第三方日志收集、清洗环节&#xff0c;因分隔符问题可能不是很友好。 xxxx - - [19/Feb/2024:11:16:48 0800] "GET …

2.21数据与结构算法学习日记(最小生成树prim算法)

目录 最小生成树prim 最小生成树算法是一种用来在一个加权连通图中找到最小生成树的算法。最小生成树是一个包含图中所有顶点的树&#xff0c;其总权值最小。 prim算法 洛谷题目示例 P3366 【模板】最小生成树 题目描述 输入格式 输出格式 输入输出样例 说明/提示 题…

【AIGC】开源声音克隆GPT-SoVITS

GPT-SoVITS 是由 RVC 创始人 RVC-Boss 与 AI 声音转换技术专家 Rcell 共同开发的一款跨语言 TTS 克隆项目&#xff0c;被誉为“最强大中文声音克隆项目” 相比以往的声音克隆项目&#xff0c;GPT-SoVITS 对硬件配置的要求相对较低&#xff0c;一般只需 6GB 显存以上的 GPU 即可…

C语言二级易忘易错易混知识点(自用)

1.数组名不能自加。 因为数组名实际上是一个指针&#xff0c;指向数组的第一个元素的地址。数组名在编译器中被视为常量&#xff0c;它的值是固定的&#xff0c;不能改变。 要访问数组的不同元素&#xff0c;应该使用数组名加上偏移量的方式来访问。 2.共用体只有最后一次赋值…

MySQL|MySQL基础(求知讲堂-学习笔记【详】)

MySQL基础 目录 MySQL基础一、 MySQL的结构二、 管理数据库1&#xff09;查询所有的数据库2&#xff09;创建数据库3&#xff09;修改数据库的字符编码4&#xff09;删除数据库5&#xff09;切换操作的数据库 三、表的概念四、字段的数据类型4.1 整型4.2 浮点型(float和double)…

node+vue3+mysql前后分离开发范式——实现视频文件上传并渲染

文章目录 ⭐前言⭐ 功能设计与实现💖 node上传文件写入file_map映射表💖 vue3前端上传文件回显⭐ 效果⭐结束⭐前言 大家好,我是yma16,本文分享关于 node+vue3+mysql前后分离开发范式——实现视频文件上传并渲染。 技术选型 前端:vite+vue3+antd 后端:node koa 数据库…

深度解析Sora的核心技术

Sora要解决的核心问题 Sora面临的挑战是将不同类型的视觉信息&#xff0c;如视频、文本、图像和声音等&#xff0c;整合为一种共同的表征形式。这种转换是实现统一训练过程的关键&#xff0c;旨在将各类数据集中到一个训练框架中&#xff0c;以便于进行大规模的统一学习。简而…

【C++】C++中的继承

目录 介绍&#xff1a; 一&#xff0c;继承的访问权限 二&#xff0c;基类和派生类对象赋值转换 三&#xff0c;继承中的作用域 四&#xff0c;派生类的默认成员函数 1&#xff0c;构造函数 2&#xff0c;析构函数 3&#xff0c;拷贝构造和赋值运算符 五&#xff0c;继…

linux下开发,stm32和arduino,我该何去何从?

linux下开发&#xff0c;stm32和arduino&#xff0c;我该何去何从&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「stm3的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共…

网站常见的反爬手段及反反爬思路

摘要:介绍常见的反爬手段和反反爬思路&#xff0c;内容详细具体&#xff0c;明晰解释每一步&#xff0c;非常适合小白和初学者学习&#xff01;&#xff01;&#xff01; 目录 一、明确几个概念 二、常见的反爬手段及反反爬思路 1、检测user-agent 2、ip 访问频率的限制 …

OpenCV笔记2:鼠标事件实现绘制直线、矩阵、曲线

OpenCV 鼠标事件 创建窗口设置窗口大小鼠标事件监听 判断事件更新起始点和终点绘制线显示图片 打开背景图 """ 鼠标事件 down up move """ import cv2 import numpy as npWINNAME DRAWBOARD st_point (-1, -1) end_point (-1, -1)def draw…

C#,洗牌问题(Card Shuffle Problem)的算法与源代码

1 洗牌问题&#xff08;Card Shuffle Problem&#xff09; 洗牌问题&#xff08;Card Shuffle Problem&#xff09;的基本描述 你有 100 张牌&#xff0c;从 1 到 100。 你把它们分成 k 堆&#xff0c;然后按顺序收集回来。 例如&#xff0c;如果您将它们分成 4 堆&#xff0…

从源代码安装 rocSOLVER 并 调试 rocSOLVER 在 Ubuntu 22.04 平台

0, 下载并编译 rocBLAS 的调试版本 sudo apt install python3.10-venv sudo apt install libmsgpack-dev sudo pip install joblibgit clone --recursive https://github.com/ROCm/rocBLAS.git $ cd rocBLAS/ $ ./install.sh -i -g构建时间也不短 1&#xff0c;下载并编译 roc…

linux 防火墙

防火墙分类 按保护范围划分 主机防火墙&#xff1a;服务服务为当前一台主机 网络防火墙&#xff1a;服务服务为防火墙一侧的局域网 按实现方式分类划分 硬件防火墙&#xff1a;在专用硬件级别实现部分功能的防火墙&#xff1b;另一部分基于软件的实现 如&#xff1a;华为&#…

ping 8.8.8.8和ping www.baidu.com都OK,但是打不开网页

ping 8.8.8.8和ping www.baidu.com都OK&#xff0c;但是打不开网页 打开设置 -> 网络 找到IPV4, DNS栏输入 8.8.8.8 , apply 设置里界面变成这样 然后网页就能加载了

vue 非父子通信-event bus 事件总线

1.作用 非父子组件之间&#xff0c;进行简易消息传递。(复杂场景→ Vuex) 2.步骤 创建一个都能访问的事件总线 &#xff08;空Vue实例&#xff09; import Vue from vue const Bus new Vue() export default Bus A组件&#xff08;接受方&#xff09;&#xff0c;监听Bus的…

04 动力云客之登录后获取用户信息+JWT存进Redis+Filter验证Token + token续期

1. 登录后获取用户信息 非常好实现. 只要新建一个controller, 并调用SS提供的Authentication对象即可 package com.sunsplanter.controller;RestController public class UserController {GetMapping(value "api/login/info")public R loginInfo(Authentication a…

Spring Boot项目中TaskDecorator的应用实践

一、前言 TaskDecorator是一个执行回调方法的装饰器&#xff0c;主要应用于传递上下文&#xff0c;或者提供任务的监控/统计信息&#xff0c;可以用于处理子线程与主线程间数据传递的问题。 二、开发示例 1.自定义TaskDecorator import org.springframework.core.task.Task…