请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师可以帮忙看一下我的Leetcode 437为什么出现wrong answer吗?

Leetcode 437 跑不通这条测试用例
以下是我的代码:

class Solution {
    public int pathSum(TreeNode root, int targetSum) {
        if (root == null) return 0;
        int res = 0;
        res += findPath(root, targetSum);
        return res + pathSum(root.left, targetSum) + pathSum(root.right, targetSum);
    }
    private int findPath(TreeNode node, int num) {
        if (node == null) return 0;
        int res = 0;
        if (node.val == num) res += 1;
        return res + findPath(node.left, num - node.val) + findPath(node.right, num - node.val);
    }
}

但是在跑这条测试用例时出现了wrong answer

root =
[1000000000,1000000000,null,294967296,null,1000000000,null,1000000000,null,1000000000],
targetSum =
0

是不是因为int型数值溢出了呢?可以把findPath的输入改成long型吗?

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2023-09-17 14:23:02

对,是因为 int 溢出了。只需要把 findPath 的 num 参数的类型改为 long 即可。(想一想为什么?)


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 不太明白为什么减法也会溢出,是不是绝对值非常大的两个数,相减,超出int就溢出了。
    回复 有任何疑惑可以回复我~ 2024-01-11 14:53:56
  • 如果理解加法能溢出的话,加一个数等价于减去这个数的负数,自然能溢出。比如 2e9 - (-2e9)。
    回复 有任何疑惑可以回复我~ 2024-01-11 15:13:56
  • 原来如此,这相当于两个很大的整数相加,自然就溢出了。看来测试用例设计的挺全面的。
    回复 有任何疑惑可以回复我~ 2024-01-11 15:29:35
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信