我正在Leetcode上解决以下问题: https://leetcode.com/problems/contains-duplicate/
给定一个整数数组nums,如果数组中有重复的数值,则返回true;否则每个元素都不同,则返回false。
我想出的解决方案是:
我想出的解决方案是:
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
try {
std::sort(nums.begin(), nums.end(), [](int a, int b) {
if (a == b) {
throw std::runtime_error("found duplicate");
}
return a < b;
});
} catch (const std::runtime_error& e) {
return true;
}
return false;
}
};
这段代码已被leetcode接受,但我仍不确定它是否总是有效。思路是开始对nums
数组进行排序,并在比较器内发现重复值时立即中断。排序算法可以按多种方式比较元素。 我预期相等的元素将始终进行比较,但我不确定。 std::sort
是否总是比较相等的值,有时会跳过比较它们,因此找不到重复值?
std::sort
比较器中抛出异常?这样的行为在任何工作面试中都不会留下好印象。 - Sam Varshavchik