日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

LintCode 402: Continuous Subarray Sum

發布時間:2024/6/21 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LintCode 402: Continuous Subarray Sum 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LintCode 402: Continuous Subarray Sum

題目描述

給定一個整數數組,請找出一個連續子數組,使得該子數組的和最大。輸出答案時,請分別返回第一個數字和最后一個數字的下標。(如果兩個相同的答案,請返回其中任意一個)

樣例

給定[-3, 1, 3, -3, 4], 返回[1,4].

Thu Feb 23 2017

思路

本題有很多解法,最巧妙的解法就是一遍掃描記憶的方法了,時間復雜度為\(O(n)\)

用一個變量記錄連續累加的和,當和為負數時,變量清零,從下一個數字開始累加記錄。

在這里只需要注意一下一些小細節,比如如何記錄最大子數組的起始位置,以及處理一下數組中所有的數都是負數的情況。

代碼

// 連續子數組求和 vector<int> continuousSubarraySum(vector<int>& A) { int max_sum = -1, sum = 0, start;int is_all_negative = 1, max_num = -9e5, max_num_ind = -1vector<int> ans(2);for (int i = 0; i < A.size(); ++i){if (sum <= 0) start = i;sum += A[i];if (sum < 0) sum = 0;else if (sum > max_sum){is_all_negative = 0;max_sum = sum;ans[0] = start;ans[1] = i;}if (max_num < A[i]){max_num = A[i];max_num_ind = i;}}if (is_all_negative){ans[0] = ans[1] = max_num_ind;}return ans; }

轉載于:https://www.cnblogs.com/genkun/p/6435196.html

總結

以上是生活随笔為你收集整理的LintCode 402: Continuous Subarray Sum的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。