​LeetCode解法汇总2460. 对数组执行操作

news/2024/7/3 9:22:21

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给你一个下标从 0 开始的数组 nums ,数组大小为 n ,且由 非负 整数组成。

你需要对数组执行 n - 1 步操作,其中第 i 步操作(从 0 开始计数)要求对 nums 中第 i 个元素执行下述指令:

  • 如果 nums[i] == nums[i + 1] ,则 nums[i] 的值变成原来的 2 倍,nums[i + 1] 的值变成 0 。否则,跳过这步操作。

在执行完 全部 操作后,将所有 0 移动 到数组的 末尾 。

  • 例如,数组 [1,0,2,0,0,1] 将所有 0 移动到末尾后变为 [1,2,1,0,0,0] 。

返回结果数组。

注意 操作应当 依次有序 执行,而不是一次性全部执行。

示例 1:

输入:nums = [1,2,2,1,1,0]
输出:[1,4,2,0,0,0]
解释:执行以下操作:
- i = 0: nums[0] 和 nums[1] 不相等,跳过这步操作。
- i = 1: nums[1] 和 nums[2] 相等,nums[1] 的值变成原来的 2 倍,nums[2] 的值变成 0 。数组变成 [1,4,0,1,1,0] 。
- i = 2: nums[2] 和 nums[3] 不相等,所以跳过这步操作。
- i = 3: nums[3] 和 nums[4] 相等,nums[3] 的值变成原来的 2 倍,nums[4] 的值变成 0 。数组变成 [1,4,0,2,0,0] 。
- i = 4: nums[4] 和 nums[5] 相等,nums[4] 的值变成原来的 2 倍,nums[5] 的值变成 0 。数组变成 [1,4,0,2,0,0] 。
执行完所有操作后,将 0 全部移动到数组末尾,得到结果数组 [1,4,2,0,0,0] 。

示例 2:

输入:nums = [0,1]
输出:[1,0]
解释:无法执行任何操作,只需要将 0 移动到末尾。

提示:

  • 2 <= nums.length <= 2000
  • 0 <= nums[i] <= 1000

解题思路:

/**

* 首先对于nums[i] == nums[i + 1]的值,进行对应的处理。

* 然后将所有 0 移动 到数组的 末尾,我们设置一个index,记录当前不为0的个数,每次遍历到一个不为0的数字时和num[index]交换位置即可。

*/

代码:

vector<int> Solution2460::applyOperations(vector<int> &nums)
{
    for (int i = 0; i < nums.size() - 1; i++)
    {
        if (nums[i] != nums[i + 1])
        {
            continue;
        }
        nums[i] = nums[i] * 2;
        nums[i + 1] = 0;
    }
    int index = 0;
    for (int i = 0; i < nums.size(); i++)
    {
        if (nums[i] == 0)
        {
            continue;
        }
        int local = nums[index];
        nums[index] = nums[i];
        nums[i] = local;
        index++;
    }

    return nums;
};


http://lihuaxi.xjx100.cn/news/1208450.html

相关文章

男子路遇“纸片鸟”,AI帮忙免惹祸

据报道&#xff0c;近日&#xff0c;河南洛阳一网友在路边偶遇一只“纸片鸟”&#xff0c;小鸟远看像一张纸片&#xff0c;样子十分奇特&#xff0c;而且还死死地盯着自己&#xff0c;像是求救&#xff0c;后来他用手机一查发现是二级保护动物“黄斑苇鳽”&#xff0c;便报警处…

迅为RK3568开发板Buildroot 系统设置屏幕旋转

迅为支持的触摸屏幕有四种&#xff1a; MIPI 7 寸屏幕&#xff08;默认物理屏幕为竖屏&#xff09; LVDS 7 寸屏幕&#xff08;默认物理屏幕为竖屏&#xff09; LVDS 10.1 寸 1024*600 屏幕&#xff08;默认物理屏幕为横屏&#xff09; LVDS 10.1 寸 1280*800 屏幕&#xf…

(iView)表格过长省略显示且提示

(iView)表格过长省略显示且提示 效果&#xff1a; 写法&#xff1a; data(){return:{ columns: [{type: "selection",align: "center",width: 60,},{title: "名称",key: "chinese",align: "center",ellipsis: true, //1.…

网站建设需要要考虑到哪些细节

在互联网时代&#xff0c;网站是一个企业的门面&#xff0c;也是一个企业的宣传窗口&#xff0c;拥有一个好的网站可以让自己的产品和服务有更好的展示平台。现如今&#xff0c;做网站建设公司有很多&#xff0c;但是并不是所有的都是专业做网站建设的公司&#xff0c;那么如何…

Linux学习[14]默认文本编辑vi/vim介绍常用指令演示指令汇总

文章目录 前言&#xff1a;1. vi介绍2. 指令演示2.1 vi创建文件2.2 添加文本 3. 指令汇总3.1 一般指令模式可用的按钮说明&#xff0c;光标移动、复制贴上、搜寻取代等3.2 进入插入或取代的编辑模式3.3 一般指令模式切换到命令行界面的可用按钮说明 总结 前言&#xff1a; 之前…

ARM体系结构和RAM的工程搭建、程序编写

目录 工程搭建 程序编写 带标志位的加法ADC ADCS 跳转指令B\BL 栈的应用->叶子函数的调用过程 栈的应用->非叶子函数的调用过程 异常中断产生指令 协处理器指令 伪操作 安装交叉编译工具 Makefile 宏定义 预编译指令 申请一个字的空间 .word 申请多个字节空间 嵌套编程 方…

如何在 JavaScript 中创建自定义警告框

本文将介绍如何使用 jQuery UI、SweetAlert2 和自定义警报功能在 JavaScript 中创建自定义警报框。 使用 jQuery UI 创建自定义警告框 我们可以使用 jQuery UI 来模仿 JavaScript 本机 alert() 函数的功能。 尽管 jQuery UI 有很多 API&#xff0c;您可以使用它的 dialog() AP…

Jumpserver 2.28.8使用分享

目录 一、Jumpserver 介绍 1、跳板机和堡垒机理解 1.1、跳板机 1.2、堡垒机 2、jumpserver简介 二、Jumpserver 安装部署 2.1、部署规划 2.2 、安装要求 JumpServer 环境要求: 2.3、安装方法介绍 官方提供了多种安装方法 三、Jumpserver平台使用 3.1、Admin登录 3.…