Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 给出一个向量中有多少个数字小于它本身_C++_Vector - Fatal编程技术网

C++ 给出一个向量中有多少个数字小于它本身

C++ 给出一个向量中有多少个数字小于它本身,c++,vector,C++,Vector,我必须找到有多少其他数字小于nums[i],然后在另一个向量中返回它们,例如[6,5,4,8]nums[0]=6,所以有两个数字小于6。所以2会被推到另一个向量。在检查最后一个元素时,我没有得到3 class Solution { public: vector<int> smallerNumbersThanCurrent(vector<int>& nums) { vector<int> nums2; for(in

我必须找到有多少其他数字小于nums[i],然后在另一个向量中返回它们,例如[6,5,4,8]nums[0]=6,所以有两个数字小于6。所以2会被推到另一个向量。在检查最后一个元素时,我没有得到3

class Solution {
public:
    vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
        vector<int> nums2;
        for(int i =0; i< nums.size(); ++i){
            int max = nums[i];
            int count = 0;
            for(int j =0; j < nums.size(); ++j){
                if(nums[j] < max && j!=0) 
                    count++;
                else 
                    continue;
            }
            nums2.push_back(count);
        }
        return nums2;
    }
};
类解决方案{
公众:
矢量小数值当前值(矢量和nums){
矢量nums2;
对于(int i=0;i
在条件下计数时排除第一个元素:

if(nums[j] < max && j!=0) 
               // ^^  ---- remove this
使用算法的一个优点是,您不必担心单个元素的索引。在上面的例子中,在代码中引入相同的bug将更加困难。换句话说,使用算法不太容易出错。当你可以的时候考虑使用它们。< /P>
注:您当前的方法具有复杂性
O(N^2)
。如果对输入向量进行排序,则可以轻松获得
O(N log N)

在条件下计数时排除第一个元素:

if(nums[j] < max && j!=0) 
               // ^^  ---- remove this
使用算法的一个优点是,您不必担心单个元素的索引。在上面的例子中,在代码中引入相同的bug将更加困难。换句话说,使用算法不太容易出错。当你可以的时候考虑使用它们。< /P>
注:您当前的方法具有复杂性
O(N^2)
。如果对输入向量进行排序,可以很容易地得到
O(N log N)

为什么要通过
&&j>将第一个元素排除在计数之外=0
?哇,问题描述说包含了这个,我把它取下来,它工作了,谢谢。你为什么通过
和&j排除第一个元素的计数=0
?哇,问题描述说包含了这个,我把它取下来,它可以工作了,谢谢