当前位置: 首页 > 知识库问答 >
问题:

cpp数据类型运行时溢出

郭翰墨
2023-03-14

给定一个非空二叉树,求最大路径和。

对于这个问题,路径被定义为沿着父子连接从某个开始节点到树中任何节点的任何节点序列。路径必须包含至少一个节点,并且不需要经过根。

  -10
   / \
  9  20
    /  \
   15   7

和 = 42

我是初学者。如果可能的话,只帮助cpp,我对逻辑非常清楚。我想知道我的数据类型知识有什么问题?

下面的maxpathsum函数必须返回int值,我使用long-long只是为了避免整数溢出,然后在返回最终答案之前进行类型转换。

输入 : [1,2] (1 为父项 2) 预期输出 : 3

实际输出:每次leetcode上的垃圾值,但有时会给出正确的输出,如3,我也知道它的数据类型错误。当我试图在visual studio或codeblocks上运行它时,我得到的正确输出是3。下面的代码有什么问题?

long long int solve(TreeNode* root,long long int &res) {
    if (root == NULL)return INT_MIN;
    long long int left = solve(root->left, res);
    long long int right = solve(root->right, res);
    //cout << left + right;
    long long int temp = max(left, max(right, left + right)) + root->val;
    res = max(1LL*res, temp);
    res = max(1LL*res,1LL* root->val);
    return max(left + 1LL * root->val, max(right + 1LL * root->val, 1LL * root->val));
}
//below function must return int value 
// i am using long long just to avoid to integer overflow
int maxPathSum(TreeNode* root) {
    long long int res;
    if(root==NULL)return 0;
    if(root->left==NULL && root->right==NULL)return root->val;
    solve(root, res);
    int ans = (int)res;
    return ans;
}

共有1个答案

萧升
2023-03-14
if (root == NULL)return INT_MIN;

请使用0。这是一个大负数。

 类似资料:
  • 问题内容: 假设通用类型声明(Java) 我如何在运行时实例化一个Type对象,该对象表示通过特定类型T(也仅在运行时才知道)进行参数化的Foo? 问题答案: 我想我明白你的问题。您想要序列化一个,并且在运行时具有class对象(但在编译时不是固定的)。因此,在Gson中建议的创建匿名子类的解决方案不起作用,因为这要求在编译时对参数化类型(例如)进行硬编码,并且如果使用,则该解决方案不起作用。 但

  • 如果我们提供足够的泛型信息,像Jackson这样的库可以从JSON创建对象。 在杰克逊,我们可以 在这种情况下,我们应该得到 在这种情况下,我们应该得到 在这种情况下,我们应该得到 为了进一步澄清,我希望在不创建任何其他类的情况下获取类型信息,并且这些信息应该传递给序列化程序,即我不希望更改类似于的序列化程序方法签名。我们可以创建任意多的helper类,也可以强制从某个超类扩展有效负载类(超类可以

  • 当我在参数n的值为2147483647时执行下面的代码时,我从if阶段得到错误(运行时错误:有符号整数溢出:2147483647 1不能在类型“int”中表示)。但是打印了“INT_MAX”。你能解释为什么我会得到这个错误吗?

  • 我有三种方法来补充给定的二进制数。第一 这是错误消息:运行时错误消息:第7行:Char 44:运行时错误:有符号整数溢出:-2147483648-1不能在类型“int”(solution.cpp)中表示摘要:UndefinedBehaviorSanitizer:undefined behavior prog_joined。cpp:16:44 最后执行的输入:2147483647

  • 本文向大家介绍C#运行期间溢出,包括了C#运行期间溢出的使用技巧和注意事项,需要的朋友参考一下 示例 在操作过程中也会发生溢出。在下面的示例中,x是一个默认值int,1是一个int默认值。因此加法是int加法。结果将是int。它将溢出。 您可以使用1L来防止这种情况。现在1将是a long,加法将是long加法            

  • 问题内容: 我正在设计SQL Server 2008 R2 SP2 Express数据库中的表。我创建的表具有用于数据的列和用于自动递增标识的列,并假设行数不多(这就是为什么我选择0-255 )。当我添加超过255行时,即使删除该表中的所有行并尝试添加一个新行,该错误仍然会永久发生。我正在使用SQL Server Management Studio Express进行此操作。 如何强制数据库引擎检