[英]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
std::sort(iterator begin, iterator end)
。 那挺好的。 之后,您对向量进行了排序: 1, 2, 3, 4, 5, 6编辑://我没有注意到它:(所以第二点现在是正确的)。
请注意,它是排序顺序中的第 k 个最大元素,而不是第 k 个不同元素。
所以你应该删除重复项。
您消除了重复值。 之后,您对向量进行了排序,没有重复: 1、2、3、4、5、6 (与以前相同,因为所有值都不同)。 这不好。 留下你在帖子中说的重复项。
你返回整数。 但是这个 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.