A67923. 下面代码用分治求“最大连续子段和”,其时间复杂度为( )。1 int solve(vector<int>& a, int l, int r){
单选题
知识点
题目描述
下面代码用分治求“最大连续子段和”,其时间复杂度为( )。
1 int solve(vector<int>& a, int l, int r){
2 if(l == r) return a[l];
3
4 int mid = l + (r - l) / 2;
5
6 int left = solve(a, l, mid);
7 int right = solve(a, mid + 1, r);
8
9 int sum = 0, lmax = INT_MIN;
10 for(int i = mid; i >= l; i--){
11 sum += a[i];
12 lmax = max(lmax, sum);
13 }
14
15 sum = 0;
16 int rmax = INT_MIN;
17 for(int i = mid + 1; i <= r; i++){
18 sum += a[i];
19 rmax = max(rmax, sum);
20 }
21
22 return max({left, right, lmax + rmax});
23 }选项(单选)
答案解析
详细答案解析为会员权益,按每日次数查看。
开通 / 升级会员