博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LintCode "Continuous Subarray Sum II"
阅读量:5085 次
发布时间:2019-06-13

本文共 2112 字,大约阅读时间需要 7 分钟。

Flip over your mind: in rotated subarray case, we can simply cut the continuous smallest subarray.

class Solution {public:    /**     * @param A an integer array     * @return  A list of integers includes the index of     *          the first number and the index of the last number     */    vector
continuousSubarraySumII(vector
& A) { vector
ret; size_t len = A.size(); long long sum = A[0], csum = A[0]; int s = 0, e = 0, ss = 0, ee = 0; // for max continuous long long sum0= A[0], csum0= A[0]; int s0= 0, e0= 0, ss0= 0, ee0= 0; // for min continuous bool bAllNeg = true; for (int i = 1; i < len; i++) { if(A[i] >= 0) bAllNeg = false; // max long long nsum = csum + A[i]; if (A[i] > nsum) { ss = ee = i; csum = A[i]; } else { ee = i; csum = nsum; } if(csum > sum) { sum = csum; s = ss; e = ee; } // min long long nsum0 = csum0 + A[i]; if (A[i] < nsum0) { ss0 = ee0 = i; csum0= A[i]; } else { ee0 = i; csum0= nsum0; } if(csum0 < sum0) { sum0 = csum0; s0 = ss0; e0 = ee0; } } long long asum = accumulate(A.begin(), A.end(), 0); long long osum = asum - sum0; if (bAllNeg) { int inx = max_element(A.begin(), A.end()) - A.begin(); ret.push_back(inx); ret.push_back(inx); } else if (sum >= osum) { ret.push_back(s); ret.push_back(e); } else { ret.push_back(e0 + 1); ret.push_back(s0 - 1); } return ret; }};

转载于:https://www.cnblogs.com/tonix/p/4851788.html

你可能感兴趣的文章
C# 连接 Exchange 发送邮件
查看>>
Hbuilder编辑器 设置less即时编译环境
查看>>
flash builder 调试问题。由于现有版本正在使用中,因此无法安装flash player
查看>>
QThread Class
查看>>
UVA227 - Puzzle(紫书习题3.5)
查看>>
动画--过渡函数 transition-timing-function
查看>>
Java笔试题之数组T特征
查看>>
关于微信小程序获取小程序码并接受buffer流保存为图片
查看>>
rabbitmq使用日记
查看>>
搬运随笔二
查看>>
System.Threading.Tasks
查看>>
WKWebView使用之MessageHandler
查看>>
继承(JAVA)
查看>>
Spark Shuffle(二)Executor、Driver之间Shuffle结果消息传递、追踪(转载)
查看>>
Google 地图 API V3 之 叠加层
查看>>
IE7绿色版下载-转载
查看>>
ubuntu 安装ssh服务端: openssh-server 失败
查看>>
用Supervisord管理Python进程
查看>>
Java Socket编程
查看>>
在Eclipse中,如何把一个java项目变成web项目
查看>>