NC295. 连续子链表最大和
描述
示例1
输入:
{1,-2,3,10,-4,7,2,-5}
输出:
18
示例2
输入:
{2}
输出:
2
示例3
输入:
{-10}
输出:
-10
C++ 解法, 执行用时: 17ms, 内存消耗: 5028KB, 提交时间: 2022-06-15
static const auto io_sync_off = []() { std::ios::sync_with_stdio(false); std::cout.tie(nullptr); std::cin.tie(nullptr); return nullptr; } (); class Solution { public: int FindGreatestSumOfSubArray(ListNode* head) { int a = head->val, b = INT_MIN; while (head) { b = max(head->val, b + head->val); a = max(a, b); head = head->next; } return a; } };
C++ 解法, 执行用时: 20ms, 内存消耗: 5024KB, 提交时间: 2022-02-10
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return int整型 */ int FindGreatestSumOfSubArray(ListNode* head) { int res = head->val, prev = INT_MIN; while (head) { prev = max(head->val, prev + head->val); res = max(res, prev); head = head->next; } return res; } };
C++ 解法, 执行用时: 20ms, 内存消耗: 5068KB, 提交时间: 2022-02-10
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return int整型 */ int temp=0,res=0,ma=-1e9; int FindGreatestSumOfSubArray(ListNode* head) { // write code here ListNode*p=head; while(p){ ma=max(ma,p->val); temp=max(temp+p->val,0); res=max(res,temp); p=p->next; } return ma<0?ma:res; } };
C++ 解法, 执行用时: 21ms, 内存消耗: 5076KB, 提交时间: 2022-02-15
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return int整型 */ int FindGreatestSumOfSubArray(ListNode* head) { // write code here ListNode* cur=head; if(head==nullptr) return 0; int ans=INT_MIN; int prev=0; while(cur){ if(prev>0){ ans=max(ans,prev+cur->val); prev+=cur->val; } else{ ans=max(ans,cur->val); prev=cur->val; } cur=cur->next; } return ans; } };
C++ 解法, 执行用时: 22ms, 内存消耗: 5048KB, 提交时间: 2022-02-24
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return int整型 */ int FindGreatestSumOfSubArray(ListNode* head) { // write code here int max = head->val, dp = head->val; ListNode *ptr = head->next; while (ptr != NULL) { dp = get_max(dp + ptr->val, ptr->val); max = get_max(dp, max); ptr = ptr->next; } return max; } int get_max(int x, int y) { if (x > y) return x; else return y; } };