如何修复 leetcode 中的以下错误?
How Can I fix the following Error in leetcode?
对于问题:
给定一个整数数组 nums,return 好对的数量。
如果 nums[i] == nums[j] 且 i < j,则称一对 (i, j) 是好的。
我写了下面的代码:
int numIdenticalPairs(vector<int>& nums) {
int count[102];
for (int num : nums) {
count[num]++;
}
int totalCount = 0;
// Calculate total number of pairs possible
for (int i : count) {
totalCount += ((i) * (i-1))/2;
}
return totalCount;
}
我收到以下错误,请帮助我修复它:
Line 21: Char 26: runtime error: signed integer overflow: -1844207608 * -1844207609 cannot be represented in type 'int' (solution.cpp)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior prog_joined.cpp:30:26
对于这类题,你也需要给出约束条件。不过,我正在根据自己的经验进行尝试。
在 C++ 中,您在 function/method 中声明的没有 malloc 或 new 的数组将进入堆栈并在您不放置任何内容时保留垃圾值。所以,你需要先初始化它。这样做:
memset(count, 0, sizeof(count));
因为我在这里没有看到任何限制,如果 count[] 的值甚至接近 10^5,您将在 的乘法中得到整数溢出i x (i-1) 也是。所以试试这个:
for (int i : count) {
totalCount += ((i) * ((long long)(i-1)))/2;
}
希望这些能解决问题。
编辑: 现在我将 Java 用于 problem-solving。所以语法上可能有一些错误。
对于问题: 给定一个整数数组 nums,return 好对的数量。
如果 nums[i] == nums[j] 且 i < j,则称一对 (i, j) 是好的。
我写了下面的代码:
int numIdenticalPairs(vector<int>& nums) {
int count[102];
for (int num : nums) {
count[num]++;
}
int totalCount = 0;
// Calculate total number of pairs possible
for (int i : count) {
totalCount += ((i) * (i-1))/2;
}
return totalCount;
}
我收到以下错误,请帮助我修复它:
Line 21: Char 26: runtime error: signed integer overflow: -1844207608 * -1844207609 cannot be represented in type 'int' (solution.cpp) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior prog_joined.cpp:30:26
对于这类题,你也需要给出约束条件。不过,我正在根据自己的经验进行尝试。
在 C++ 中,您在 function/method 中声明的没有 malloc 或 new 的数组将进入堆栈并在您不放置任何内容时保留垃圾值。所以,你需要先初始化它。这样做:
memset(count, 0, sizeof(count));
因为我在这里没有看到任何限制,如果 count[] 的值甚至接近 10^5,您将在 的乘法中得到整数溢出i x (i-1) 也是。所以试试这个:
for (int i : count) {
totalCount += ((i) * ((long long)(i-1)))/2;
}
希望这些能解决问题。
编辑: 现在我将 Java 用于 problem-solving。所以语法上可能有一些错误。