繁体   English   中英

215. 数组中的第 K 个最大元素 C++ 解决方案不起作用

[英]215. Kth Largest Element in an Array C++ Solution Not Working

给定一个整数数组 nums 和一个整数 k,返回数组中第 k 个最大的元素。

请注意,它是排序顺序中的第 k 个最大元素,而不是第 k 个不同元素。

示例 1:

输入:nums = [3,2,1,5,6,4], k = 2 输出:5

我的解决方案如下,我不明白为什么它不起作用。 也许我读错了问题? 有人可以解释一下。

class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        sort(nums.begin(), nums.end() );
        nums.erase(unique(nums.begin(), nums.end() ), nums.end() );
        
        return nums.size() - k;
        
    }
};

让我们用你的例子来看看你的功能

输入:nums = [3,2,1,5,6,4], k = 2 输出:5

  1. 你按升序排序std::sort(iterator begin, iterator end) 那挺好的。 之后,您对向量进行了排序1, 2, 3, 4, 5, 6

编辑://我没有注意到它:(所以第二点现在是正确的)。

请注意,它是排序顺序中的第 k 个最大元素,而不是第 k 个不同元素。

所以你应该删除重复项。

  1. 您消除了重复值。 之后,您对向量进行了排序,没有重复1、2、3、4、5、6 (与以前相同,因为所有值都不同)。 这不好。 留下你在帖子中说的重复项。

  2. 你返回整数。 但是这个 int 中存储了什么? num.size() - k num.size()多少? 6 ,因为向量有六个元素。 K = 2(来自输入)。 因此,结果为 4。您返回值为4 的int 您不会从向量或诸如此类的东西返回任何元素。 您返回向量减去 const (参数)的大小。 但是值4很好,但你必须用它做更多的事情。

想想你的回报。 希望它有帮助。

附注。 不要使用命名空间 std。 始终使用std::sort等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM