首页 > 其他分享 >Leetcode 2460. 对数组执行操作

Leetcode 2460. 对数组执行操作

时间:2023-06-05 14:24:02浏览次数:52  
标签:2460 nums 末尾 数组 操作 变成 执行 Leetcode

题目:

给你一个下标从 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

代码实现:

class Solution {
public:
    vector<int> applyOperations(vector<int>& nums) {
        int n = nums.size();
        for(int i = 0, j = 0; i < n; ++i){
            // 模拟操作
            if(i + 1 < n && nums[i] == nums[i + 1]){
                nums[i] <<= 1;
                nums[i + 1] = 0;
            }
            // 同时移动非 0 到前面
            if(nums[i] != 0){
                swap(nums[i], nums[j]);
                ++j;
            }
        }
        return nums;
    }
};

标签:2460,nums,末尾,数组,操作,变成,执行,Leetcode
From: https://www.cnblogs.com/DL1024/p/17457651.html

相关文章

  • 1.6. 数组
    数组是一种数据结构,用于存储相同类型的多个元素。在Java中,数组是一个对象,它具有一定数量的连续内存空间。数组中的每个元素都有一个索引,用于访问和操作元素。1.6.1.数组的声明与初始化在Java中,可以使用以下语法声明一个数组:元素类型[]数组名;要创建一个数组,需要使用 n......
  • [LeetCode] 2460. Apply Operations to an Array
    Youaregivena 0-indexed array nums ofsize n consistingof non-negative integers.Youneedtoapply n-1 operationstothisarraywhere,inthe ith operation(0-indexed),youwillapplythefollowingonthe ith elementof nums:If nums[i]......
  • LeetCode 669. 修剪二叉搜索树
    思路遍历所有节点,如果当前节点不在所给区间里,删除该点;否则如果该点要被删除,将其左右子树其中之一提上来即可根节点位于左右子树取值区间的中间,如果该点要被删除,那么一定存在不满足要求的子树,不可能两棵子树同时保留代码classSolution{public:TreeNode*trimBST(......
  • go语言数组
    线性数据结构线性表是一种抽象的数学概念,是一组元素的序列的抽象,它由有穷个元素组成(0个或任意个)。包括顺序表和链接表。顺序表:使用一大块连续的内存顺序存储表中的元素,这样实现的表称为顺序表,或称连续表在顺序表中,元素的关系使用顺序表的存储顺序自然地表示;链接表:在存储空间......
  • 718. 最长重复子数组
    给两个整数数组nums1和nums2,返回两个数组中公共的、长度最长的子数组的长度。示例1:输入:nums1=[1,2,3,2,1],nums2=[3,2,1,4,7]输出:3解释:长度最长的公共子数组是[3,2,1]。>动态规划classSolution{public:intfindLength(vector<int>&nums1,ve......
  • 【蓝桥杯集训·每日一题】AcWing 3805. 环形数组
    写在前面本人CSDN博客主页:这里一、题目1、原题链接3805.环形数组2、题目描述给定一个长度为n的环形数组a0,a1,…,an−1。现在要对该数组进行m次操作。操作分为以下两种:增值操作lrd,将区间[l,r]上的每个元素都增加d。求最小值操作lr,输出区间[l,r]内的所有元素的最小......
  • 6.8 数组类库支持
    demo1java.util.Arrays.sort()实现排序classArrayUtil{publicstaticvoidprintArray(inttemp[]){for(intx=0;x<temp.length;x++){System.out.print(temp[x]+",");}}}publicclassHelloWorld{p......
  • 6.7 数组转置案例分析
    利用数组角标来置换操作classArrayUtil{//数组转置操作,左右排序颠倒操作;publicstaticvoidreverse(intdata[]){intcenter=data.length/2;inthead=0;inttail=data.length-1;for(intx=0;x<center;x......
  • js数组对象转树结构
    原始数组对象:letarr=[{id:1,name:"节点1",parentId:0},{id:2,name:"节点2",parentId:1},{id:3,name:"节点3",parentId:1},{id:4,name:"节点4",parentId:2},{id:5,name:"节点5&qu......
  • 第五章 数组
    1.数组的概述‍1.1概念‍概念:是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。简称:多个数据的组合‍数组中的概念数组名下标(或索引)元素数组的长度​​‍数组的特点:数组本身是​引用数据类型​,而数组中的元......