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

每日OJ题_算法_双指针_力扣283. 移动零+力扣1089. 复写零

力扣283. 移动零

283. 移动零 - 力扣(LeetCode)

难度 简单

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2:

输入: nums = [0]
输出: [0]

提示:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

进阶:你能尽量减少完成的操作次数吗?

class Solution {
public:void moveZeroes(vector<int>& nums) {}
};

解析代码

经典的双指针问题(数组的双指针问题就是运用下标模拟指针):

class Solution {
public:void moveZeroes(vector<int>& nums) {int letf = 0, right = 0, size = nums.size();while(right < size){if(nums[right] != 0){swap(nums[letf++], nums[right]);}++right;}}
};

力扣1089. 复写零

1089. 复写零 - 力扣(LeetCode)

难度 简单

给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。

注意:请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。

示例 1:

输入:arr = [1,0,2,3,0,4,5,0]
输出:[1,0,0,2,3,0,0,4]
解释:调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4]

示例 2:

输入:arr = [1,2,3]
输出:[1,2,3]
解释:调用函数后,输入的数组将被修改为:[1,2,3]

提示:

  • 1 <= arr.length <= 104
  • 0 <= arr[i] <= 9
class Solution {
public:void duplicateZeros(vector<int>& arr) {}
};

解析代码

从右往前的双指针问题(标的简单实际并不简单),需要先找到最后得到的vector最右边的数。这里找这个数用从左向右的双指针:

class Solution {
public:void duplicateZeros(vector<int>& arr) {int left = -1, right = 0, size = arr.size();while(right < size) // 找到最后一个数{if(arr[right] != 0){left++;}else{left += 2;}if(left >= size - 1){break;}right++;}if(left == size) // 处理边界情况{arr[size - 1] = 0;right --;left -= 2;}while(right >= 0) // 从右往左复写{if(arr[right] != 0){arr[left--] = arr[right--];}else{arr[left--] = 0;arr[left--] = 0;right--;}}}
};

相关文章:

每日OJ题_算法_双指针_力扣283. 移动零+力扣1089. 复写零

力扣283. 移动零 283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 难度 简单 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例…...

WebGl-Blender:建模 / 想象成形 / Blender概念词汇表 / 快捷键

一、理解Blender 欢迎来到Blender&#xff01;Blender是一款免费开源的3D创作套件。 使用Blender&#xff0c;您可以创建3D可视化效果&#xff0c;例如建模、静态图像&#xff0c;3D动画&#xff0c;VFX&#xff08;视觉特效&#xff09;快照和视频编辑。它非常适合那些受益于…...

【C++】【Opencv】cv::warpAffine()仿射变换函数详解,实现平移、缩放和旋转等功能

仿射变换是一种二维变换&#xff0c;它可以将一个二维图形映射到另一个二维图形上&#xff0c;保持了图形的“形状”和“大小”不变&#xff0c;但可能会改变图形的方向和位置。仿射变换可以用一个线性变换矩阵来表示&#xff0c;该矩阵包含了六个参数&#xff0c;可以进行平移…...

WPF实现右键菜单

在WPF中&#xff0c;创建上下文菜单&#xff08;通常称为“右键菜单”&#xff09;是通过使用ContextMenu控件来实现的。你可以在XAML中声明上下文菜单&#xff0c;并将其关联到任何FrameworkElement。以下是如何在WPF中实现上下文菜单的基本步骤&#xff1a; 1. 在XAML中定义…...

Java智慧工地SaaS管理平台源码:AI/云计算/物联网

智慧工地是指运用信息化手段&#xff0c;围绕施工过程管理&#xff0c;建立互联协同、智能生产、科学管理的施工项目信息化生态圈&#xff0c;并将此数据在虚拟现实环境下与物联网采集到的工程信息进行数据挖掘分析&#xff0c;提供过程趋势预测及专家预案&#xff0c;实现工程…...

【漏洞复现】通达oa 前台sql注入

漏洞描述 通达OA(Office Automation)是一款企业级协同办公软件,旨在为企业提供高效、便捷、安全、可控的办公环境。它涵盖了企业日常办公所需的各项功能,包括人事管理、财务管理、采购管理、销售管理、库存管理、生产管理、办公自动化等。通达OA支持PC端和移动端使用,可以…...

机器学习笔记 - Ocr识别中的文本检测EAST网络概述

一、文本检测 文本检测简单来说就是找到图像中可以出现文本的区域。例如,请参见下图,其中在检测到的文本周围绘制了绿色边框。 在进行文本检测时,你可能会遇到两种情况 具有结构化文本的图像:这是指具有干净/均匀背景和常规字体的图像。文本大多密集,行结构正确,…...

【SQL server】数据库、数据表的创建

创建数据库 --如果存在就删除 --所有的数据库都存在sys.databases当中 if exists(select * from sys.databases where name DBTEST)drop database DBTEST--创建数据库 else create database DBTEST on --数据文件 (nameDBTEST,--逻辑名称 字符串用单引号filenameD:\DATA\DBT…...

vue的生命周期分别是什么?

Vue的生命周期分为8个阶段&#xff0c;分别是&#xff1a; beforeCreate&#xff1a;实例初始化之后&#xff0c;数据观测 (data observer) 和 event/watcher 事件配置之前被调用。 created&#xff1a;实例已经创建完成后被调用&#xff0c;这时候实例已完成以下的配置&#…...

Java拼图游戏

运行出的游戏界面如下&#xff1a; 按住A不松开&#xff0c;显示完整图片&#xff1b;松开A显示随机打乱的图片。 User类 package domain;/*** ClassName: User* Author: Kox* Data: 2023/2/2* Sketch:*/ public class User {private String username;private String password…...

Vue框架的element组件table文字居中

1.直接上代码 <el-table max-height"500px" :data"datas.roles" style"width: 100%" border :header-cell-style"{textAlign: center}" :cell-style"{ textAlign: center }"><el-table-column prop"id" …...

科技创新 共铸典范 | 江西卫健办邓敏、飞图影像董事长洪诗诗一行到访拓世科技集团,提振公共卫生事业发展

2023年11月15日&#xff0c;拓世科技集团总部迎来了江西省卫健项目办项目负责人邓敏、江西飞图影像科技有限公司董事长洪诗诗一行的考察参观&#xff0c;集团董事长李火亮、集团高级副总裁方高强进行热情接待。此次多方交流&#xff0c;旨在共同探讨携手合作&#xff0c;激发科…...

Linux安装OpenCV并配置VSCode环境

Linux安装OpenCV并配置VSCode环境 安装OpenCV环境安装必需工具下载并解压OpenCV库&#xff08;Opencv Core Modules和opencv_contrib&#xff09;创建构建目录&#xff0c;进行构建验证构建结果安装验证安装结果 配置VSCode环境创建项目文件修改配置信息执行程序 安装环境 Ubun…...

Django(ORM事务操作|ORM常见字段类型|ORM常见字段参数|关系字段|Meta元信息)

文章目录 ORM事务操作什么是事务&#xff1f;事务的产生事务的四大特征ORM中如何使用事务 ORM字段类型常用字段与不常用字段类型ORM还支持用户自定义字段类型 ORM字段参数关系字段ForeignKey外键on_delete参数设置的值 OneToOneField与ForeignKey的区别多对多关系建立的方式ORM…...

【mujoco】Ubuntu20.04配置mujoco210

【mujoco】Ubuntu20.04配置mujoco210 文章目录 【mujoco】Ubuntu20.04配置mujoco2101. 安装mujoco2102. 安装mujoco-py3.使用render时报错Reference 本文简要介绍一下如何在ubuntu20.04系统中配置mujoco210&#xff0c;用于强化学习。 1. 安装mujoco210 在官方资源里找到http…...

【洛谷 P3853】[TJOI2007] 路标设置 题解(二分答案+循环)

[TJOI2007] 路标设置 题目背景 B 市和 T 市之间有一条长长的高速公路&#xff0c;这条公路的某些地方设有路标&#xff0c;但是大家都感觉路标设得太少了&#xff0c;相邻两个路标之间往往隔着相当长的一段距离。为了便于研究这个问题&#xff0c;我们把公路上相邻路标的最大…...

蓝桥杯 vector

vector的定义和特性 注意&#xff1a;vector需要开C11标准 vector的常用函数 push_back():将元素添加到vector末尾 pop_back():删除vector末尾的元素 begin()和end():返回指向vector第一个元素和最后一个元素之后一个位置的迭代器。 示例 vector<int> vec{10,20,30};f…...

ai绘画部署教程

在部署AI绘画Web环境的过程中&#xff0c;你提供了一些关键步骤。以下是一些详细说明&#xff1a; 1. 克隆webui 首先&#xff0c;通过以下命令从GitHub上克隆webui的代码&#xff1a; git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 这将下载webui的源…...

策略模式的应用——应对频繁的需求变更

秋招结束后&#xff0c;间接性堕落了一段时间&#xff0c;学习几乎停止下来了。内心甚是焦灼&#xff0c;感觉生活很无趣&#xff01;为了在参加工作后能够快速上手和成为一名优秀的中级开发者&#xff0c;从这篇文章开始将不断学习优秀的编码经验&#xff0c;学习是永无止境的…...

qt-C++笔记之treeWidget初次使用

qt-C笔记之treeWidget初次使用 code review! 文章目录 qt-C笔记之treeWidget初次使用1.运行2.文件结构3.main.cpp4.widget.h5.widget.cpp6.widget.ui7.main.qrc8.qt_widget_test.pro9.options.png 1.运行 2.文件结构 3.main.cpp 代码 #include "widget.h"#include…...

Qwen2.5-VL-7B-Instruct保姆级:SSH远程部署+ngrok内网穿透共享演示

Qwen2.5-VL-7B-Instruct保姆级&#xff1a;SSH远程部署ngrok内网穿透共享演示 想不想在远程服务器上部署一个能“看图说话”的AI助手&#xff0c;还能随时随地通过网页访问它&#xff1f;今天&#xff0c;我就带你手把手搞定这件事。 我们将一起完成两个核心任务&#xff1a;…...

多无人机协同避障之自适应重构 V 型编队与分布式控制算法探索

多无人机 协同避障 自适应重构v型编队 分布式控制算法 包含参考文献和完整代码 #无人机 #协同避障 #重构队形 #分布式控制 #自适应重构编队在无人机应用领域&#xff0c;多无人机协同作业已成为研究热点。其中&#xff0c;协同避障以及自适应重构编队是实现高效任务执行的关键技…...

从绝望到希望:3步拯救你的重要数据

从绝望到希望&#xff1a;3步拯救你的重要数据 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 当硬盘突然罢工&#xff0c;分区神秘消失&#xff0c;或者重要文件被误删时&#xff0c;那种感觉就像精心搭建的…...

2026年最新出炉!汉中装修公司口碑排行榜大揭秘来了!

装修是一件大事&#xff0c;关乎着未来生活的品质和舒适度。在汉中&#xff0c;众多装修公司让人眼花缭乱&#xff0c;如何选择一家靠谱的装修公司成为了许多业主的难题。今天&#xff0c;我们就来揭秘2026年汉中装修公司口碑排行榜&#xff0c;重点推荐汉中恒丰装饰&#xff0…...

工业相机图像获取:RAW 图像如何保存和显示,附海康Basler堡盟相机代码

工业相机RAW图像保存显示&#xff0c;海康/Basler/堡盟代码直接抄 阅读提示&#xff1a;本文偏向工业视觉入门实操&#xff0c;避开晦涩理论&#xff0c;聚焦RAW图像的保存、显示落地方法&#xff0c;附带三大主流工业相机品牌的实测代码&#xff0c;适合视觉工程师、调试新手快…...

别再只会用Ettercap了!手把手教你用Python+Scapy从零写一个ARP欺骗脚本(附完整代码)

从零构建ARP欺骗工具&#xff1a;用PythonScapy深入理解网络协议安全 在网络安全领域&#xff0c;ARP欺骗一直是最基础却又最危险的攻击手段之一。大多数初学者会直接使用现成的工具如Ettercap进行实验&#xff0c;但这往往停留在"知其然"的层面。本文将带你从协议层…...

Z-Image-Turbo-辉夜巫女材质与光影专题:金属、玻璃、织物等不同质感的极致渲染

Z-Image-Turbo-辉夜巫女材质与光影专题&#xff1a;金属、玻璃、织物等不同质感的极致渲染 你有没有想过&#xff0c;为什么有些AI生成的图片看起来“假假的”&#xff0c;一眼就能认出来&#xff1f;很多时候&#xff0c;问题就出在“质感”上。金属不像金属&#xff0c;玻璃…...

构建智能投资决策中枢:TradingAgents-CN多维度金融分析框架实战指南

构建智能投资决策中枢&#xff1a;TradingAgents-CN多维度金融分析框架实战指南 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 破解投资决策困境…...

LaTeX科技论文写作:如何优雅地呈现SenseVoice-Small模型实验数据

LaTeX科技论文写作&#xff1a;如何优雅地呈现SenseVoice-Small模型实验数据 写论文&#xff0c;尤其是技术论文&#xff0c;最头疼的往往不是实验本身&#xff0c;而是如何把那些复杂的模型结构、密密麻麻的数据和曲线图&#xff0c;清晰又专业地呈现在纸上。你辛辛苦苦跑出来…...

Screencast Keys深度解析:从实时事件捕获到Blender操作可视化进阶指南

Screencast Keys深度解析&#xff1a;从实时事件捕获到Blender操作可视化进阶指南 【免费下载链接】Screencast-Keys Blender Add-on: Screencast Keys 项目地址: https://gitcode.com/gh_mirrors/sc/Screencast-Keys Screencast Keys作为Blender生态系统中一款专注于操…...