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

来源:7-6 稍复杂的递归逻辑 Path Sum III

Yvonne_yn

2023-09-17

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型吗?

写回答

1回答

liuyubobobo

2023-09-17

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


继续加油!:)

0
3
阿阳2017
回复
liuyubobobo
原来如此,这相当于两个很大的整数相加,自然就溢出了。看来测试用例设计的挺全面的。
2024-01-11
共3条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程