当前位置: 首页 > 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…...

基于GPT-5.4的本科毕业论文智能写作实战指南:从实验数据到完稿的全流程教程

摘要&#xff1a; 对于已完成实验并手握参考文献的大四学生而言&#xff0c;将 months of experiments 转化为符合学术规范的毕业论文往往是最具挑战性的环节。本教程系统介绍如何利用GPT-5.4这一先进的大语言模型&#xff0c;通过科学的提示词工程&#xff08;Prompt Engineer…...

基于carsim Simulink联合仿真和预瞄PID算法的轨迹跟踪模型】车辆路径跟踪包括主车...

基于carsim Simulink联合仿真和预瞄PID算法的轨迹跟踪模型】车辆路径跟踪包括主车的纵向和横向运动控制&#xff0c;纵向控制是通过调整轮毂电机的扭矩&#xff0c;使得车辆以期望的速度行驶&#xff1b;横向控制是通过调整主车的转向&#xff0c;使主车沿预期的轨迹行驶。 本模…...

Tailwind CSS在Vue3+Vite项目中的实战应用:从零到响应式按钮

Tailwind CSS在Vue3Vite项目中的实战应用&#xff1a;从零到响应式按钮 如果你正在使用Vue3和Vite构建现代Web应用&#xff0c;却对传统CSS的维护成本感到头疼&#xff0c;那么Tailwind CSS可能会成为你的新宠。这个实用优先的CSS框架彻底改变了我们编写样式的方式——不再需要…...

从IPython和REPL中找灵感:用prompt_toolkit打造你的专属Python交互式环境

从IPython和REPL中找灵感&#xff1a;用prompt_toolkit打造你的专属Python交互式环境 在Python开发者的日常工作中&#xff0c;交互式环境是不可或缺的伙伴。无论是快速验证代码片段、调试复杂逻辑&#xff0c;还是探索数据结构和API行为&#xff0c;一个优秀的交互式环境能显…...

Hive【从SQL到MapReduce:核心架构与执行引擎深度解析】

1. Hive的核心角色&#xff1a;SQL到分布式计算的翻译官 第一次接触Hive时&#xff0c;很多人会疑惑&#xff1a;为什么要在Hadoop生态中引入这样一个"类SQL"工具&#xff1f;这要从大数据处理的痛点说起。想象你面前有一本百万页的百科全书&#xff0c;现在需要统计…...

项目介绍 MATLAB实现基于RRT-Bezier快速搜索随机树算法(RRT)结合贝塞尔曲线拟合(Bezier)进行无人机三维路径规划的详细项目实例(含模型描述及部分示例代码) 还请多多点一下关注 加

MATLAB实现基于RRT-Bezier快速搜索随机树算法&#xff08;RRT&#xff09;结合贝塞尔曲线拟合&#xff08;Bezier&#xff09;进行无人机三维路径规划的详细项目实例 更多详细内容可直接联系博主本人 或者访问对应标题的完整博客或者文档下载页面&#xff08;含完整的程序&a…...

告别Keil,用VSCode+GCC+STM32CubeMX的Makefile在Windows上编译STM32F103(附完整配置流程)

从Keil到VSCode&#xff1a;打造现代化STM32开发环境全指南 在嵌入式开发领域&#xff0c;商业IDE&#xff08;如Keil MDK&#xff09;长期占据主导地位&#xff0c;但随着开源工具链的成熟和开发者对效率要求的提升&#xff0c;越来越多的工程师开始寻求更灵活、更现代化的开…...

DataWorks与PyODPS实战:MaxCompute数据处理高效技巧

1. 初识DataWorks与PyODPS&#xff1a;大数据处理的黄金搭档 第一次接触DataWorks和PyODPS时&#xff0c;我就像发现了一个新大陆。DataWorks作为阿里云的一站式大数据开发平台&#xff0c;而PyODPS则是连接Python和MaxCompute的桥梁&#xff0c;这个组合让大数据处理变得前所…...

网络工程师的日常:一次搞定eNSP中MSTP+VRRP的‘坑’与优化技巧

eNSP实战&#xff1a;MSTPVRRP组网中的典型故障排查与性能调优 凌晨两点&#xff0c;当我在eNSP模拟器中第三次看到"VRRP state transition to Backup"的日志时&#xff0c;咖啡杯已经见底。这个典型的双核心企业网架构本该在半小时内完成配置&#xff0c;却因为MSTP…...

提升输入效率:Qwerty Learner开源键盘训练工具的肌肉记忆训练方案

提升输入效率&#xff1a;Qwerty Learner开源键盘训练工具的肌肉记忆训练方案 【免费下载链接】qwerty-learner 项目地址: https://gitcode.com/GitHub_Trending/qw/qwerty-learner Qwerty Learner是一款开源键盘训练工具&#xff0c;通过将单词记忆与英语肌肉记忆训练…...