首页 > 其他分享 >将数组清空

将数组清空

时间:2023-04-30 14:45:29浏览次数:32  
标签:nums int res long ++ 数组 清空

给你一个包含若干互不相同整数的数组nums,你需要执行以下操作直到数组为空 :

  • 如果数组中第一个元素是当前数组中的最小值则删除它
  • 否则,将第一个元素移动到数组的末尾

请你返回需要多少个操作使nums为空

1. 逆向思维

class Solution {
public:
    long long countOperationsToEmptyArray(vector<int>& nums) {
        map<int, int> m;
        for(int i = 0; i < nums.size(); i++)
            m[nums[i]] = i;//记录值对应下标
        int N = 1;//最后一个元素只用一次

        long long res = 0;
        auto it = m.begin();//最小值
        res = res + N;
        
        int index = it->second;//记录之前位置
        it++;
        while(it != m.end()){//从小到大遍历所有数
            if(it->second<index)//比之前坐标小,被换到后面
                N++;//每换一次位置,倒数元素就要多操作一次
            res = res + N;
            index = it->second;
            it++;
        }
        return res;   
    }
};

标签:nums,int,res,long,++,数组,清空
From: https://www.cnblogs.com/929code/p/17365254.html

相关文章

  • 【剑指 Offer】 51. 数组中的逆序对
    【题目】在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 示例1:输入:[7,5,6,4]输出:5 限制:0<=数组长度<=50000来源:力扣(LeetCode)链接:https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-du......
  • Java根据Integer数组(有null值)递归构造二叉树
    二叉树:publicclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(){}TreeNode(intval){this.val=val;}TreeNode(intval,TreeNodeleft,TreeNoderight){this.val=val;this.l......
  • Java二维数组
    二维数组二维数组的应用场景:但我们需要把数据分组管理的时候,就需要用到二维数组二维数组初始化:1、静态初始化:格式:数据类型[][]数组名=new数据类型[][]{{元素1,元素2},{元素1,元素2}};eg:int[][]arr=newint[][]{{11,22},{33,44}}简化格式:数据类型[][]数组名={{元素1......
  • HashMap的数组长度为何必须是2的n次方
    扩容方便,数字位移计算方便效率高;计算元素下标使用的方式是key的hash&(数组length-1),由于length是2^n,转换成二进制后2^-1最低位就全部都是1,比如111,就相当于是数组长度的掩码,那么hash&111就可以将数组的每一位都覆盖,加入数组长度不是2^n,那么length-1低位不全是1,比如101,那么h......
  • 2023-04-29:一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数
    2023-04-29:一个序列的宽度定义为该序列中最大元素和最小元素的差值。给你一个整数数组nums,返回nums的所有非空子序列的宽度之和由于答案可能非常大,请返回对109+7取余后的结果。子序列定义为从一个数组里删除一些(或者不删除)元素,但不改变剩下元素的顺序得到的数组......
  • 2023-04-29:一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数
    2023-04-29:一个序列的宽度定义为该序列中最大元素和最小元素的差值。给你一个整数数组nums,返回nums的所有非空子序列的宽度之和由于答案可能非常大,请返回对109+7取余后的结果。子序列定义为从一个数组里删除一些(或者不删除)元素,但不改变剩下元素的顺序得到的数......
  • 长度最小的子数组--Python解法
    给定一个含有 n 个正整数的数组和一个正整数target。找出该数组中满足其和≥target的长度最小的连续子数组 [numsl,numsl+1,...,numsr-1,numsr],并返回其长度。如果不存在符合条件的子数组,返回0。defminSubArrayLen(self,s:int,nums:List[int])->int:......
  • 树状数组 好题整理
    树状数组好题整理[SDOI2009]HH的项链离线询问后,按右端点升序排序,考虑建立一个树状数组,只包含0/1,把含每种颜色的点中最靠右的位置打上1的标记,询问\([l,r]\)答案即为\(query_r-query_{l-1}\),可以证明,如果一个相同颜色的点的位置对答案有贡献,那么最靠右的位置也一定能......
  • react的类组件和函数组件 -- 状态 state
    //函数组件是无状态的既没有数据的类似vue组件中的data数据//类组件是有状态的组件是有数据的是双向绑定的数据是数据驱动视图的负责UI的视图更新(单个组件的私有数据组件之间的数据是独立的)importReactDomfrom"react-dom"import{Component}from"react......
  • 数组模拟实现数据结构
    数组模拟链表实现①单链表:邻接表(存储图和树)②双链表:优化某些问题单链表inte[N]存储val,intne[N]存储next//单链表模板inthead,e[N],ne[N],idx;//head表示头节点的下标,e[i]表示节点i的值,ne[i]表示节点i的指针是多少,idx存储当前已经用到了哪个点v......