C++ 错误: 'min' 函数无法匹配 - 解决方法及代码示例
这个报错是因为在代码中使用了 min 函数,但编译器无法找到匹配的函数。原因是 min 函数的参数类型不一致,导致无法进行匹配。
为了解决这个问题,你可以使用条件表达式(ternary operator)来代替 min 函数,手动比较两个数并选择较小的值。
以下是修复后的代码示例:
class Solution {
public:
bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) {
int i, j, minnum = nums[0], maxnum = nums[0], bucketsize, bucketnum, tmp;
for (i = 1; i < nums.size(); i++) {
minnum = (nums[i] < minnum) ? nums[i] : minnum;
maxnum = (nums[i] > maxnum) ? nums[i] : maxnum;
}
bucketsize = t + 1;
bucketnum = (maxnum - minnum) / bucketsize + 1;
vector<vector<int>> buckets(bucketnum, vector<int>());
for (i = 0; i < nums.size(); i++) {
tmp = (nums[i] - minnum) / bucketsize;
for (j = -1; j <= 1; j++) {
if (tmp + j >= 0 && tmp + j < bucketnum) {
for (int n : buckets[tmp + j]) {
if (abs(nums[i] - nums[n]) <= t && abs(i - n) <= k)
return true;
}
}
}
buckets[tmp].push_back(i);
if (buckets[tmp].size() > 1) {
sort(buckets[tmp].begin(), buckets[tmp].end());
}
}
return false;
}
};
在这个修复后的代码中,对于每个元素 nums[i],使用条件表达式 (nums[i] < minnum) ? nums[i] : minnum 和 (nums[i] > maxnum) ? nums[i] : maxnum 来手动比较两个数,并选择较小或较大的值,从而替代了原来的 min 和 max 函数。
这样修改后的代码应该可以通过编译并正常执行了。
原文地址: https://www.cveoy.top/t/topic/bczI 著作权归作者所有。请勿转载和采集!