有多少小于当前数字的数字(21days打卡第二天)

第二天
在这里插入图片描述
在这里插入图片描述
1 vector.push_back()
2 vector.at(i):返回第i个元素

看了答案以后,有几种其他的方法:
桶排序+前缀和的方法:
由于题目的nums[i]值域范围在0-100,这就表示可能值是有限的,共101种情况,那么只需要使用相应的桶来存储出现的个数即可
比如nums=[8,1,2,2,3],创建一个array[101]
则array[8]=1,array[1]=2,array[2]=2,array[3]=1;
这样的话array[i]的前面所有的元素都一定小于它,那么只需要遍历前面的元素,总和加起来就可以了
有两种思路,一个是单独用一个数组来存储,但是会出现重复的相加,比如result[3]是array[0]+array[1]+array[2],而result[4]又会再把这三者加一遍
但是实际上,result[i]就是前面所有的result[i-1]加起来,这就是前缀和的思想
所以直接用array[i]来存储结果,此时该数组表示的不是每个元素的个数,而是最终的结果

上图来自leetcode官方解

        一、Vector的几种定义和初始化方式(以int数据为例)
        Vector<int> v1;             // 默认构造函数v1为空
        Vector<int> v2(v1);      // v2是v1的一个副本
        Vector<int> v3(n,i);      // v3包含n个值为i的元素
        Vector<int> v4(n);        // v4含有n个值为0的元素
        
        二、Vector对象常用的几种操作
         push_back(t);    // 在数组的最后添加一个值为t的数据
         pop_back();       // 在数组的最后移除最后一个数据
         clear();                // 清空所有元素
         size();                  // 返回数组元素的个数
         erase(t);              // 删除指定元素t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值