lintcode 子数组问题(最全的面试子数组问题)
前言
2017年的六月份到九月份,陆陆续续在leetcode上面刷了130道题目。
![](/assets/blank.gif)
class Solution {
public:/** @param nums: A list of integers* @param k: An integer denote to find k non-overlapping subarrays* @return: An integer denote the sum of max k non-overlapping subarrays*/int maxSubArray(vector<int> &nums, int k) {// write your code here//到第i个位置在内,分为m个不重叠的子数组//要看包含第i-1个位置(分为m个),到第i-1个位置、不一定包含第i-1个位置(分为m-1个)int len = nums.size();vector<vector<int> > local(len,vector<int>(k)); //一定包含第i位置vector<vector<int> > global(len,vector<int>(k)); //不一定包含第i个位置for(int i=0;i<len;++i){for(int m=0;m<k;++m){if(m>i) break;if(m==0){local[i][m] = i==0?nums[i]:max(local[i-1][m],0)+nums[i];global[i][m] = i==0?nums[i]:max(local[i][m],global[i-1][m]);}else{local[i][m] = i-1>=m?max(global[i-1][m-1],local[i-1][m])+nums[i]:global[i-1][m-1]+nums[i];global[i][m] = i-1>=m?max(local[i][m],global[i-1][m]):local[i][m];}}}return global[len-1][k-1];}
};
44.最小子数组
和41最大子数组类似
class Solution {
public:/** @param nums: A list of integers* @return: A list of integers includes the index of the first number and the index of the last number*/vector<int> subarraySum(vector<int> &nums) {// write your code hereint len=nums.size(), sum=0;vector<int> res(2);map<int,int> mp;mp[0]=-1;for(int i=0;i<len;++i){sum+=nums[i];if(mp.find(sum)!=mp.end()){res[0]=mp[sum]+1,res[1]=i;return res;}mp[sum]=i;}}
};
class Solution {
public:/** @param nums: an array with positive and negative numbers* @param k: an integer* @return: the maximum average*/double maxAverage(vector<int> &nums, int k) {int len = nums.size();double l=nums[0],r=nums[0],mid,eps=1e-6;vector<double> sum(len+1);for(int i=1;i<len;++i){l = min(l,double(nums[i]));r = max(r,double(nums[i]));}while(r-l>eps){mid = (r+l)/2;double pre=0;bool flag=false;sum[0]=0;for(int i=1;i<=len;++i)sum[i]=sum[i-1]+nums[i-1]-mid;for(int i=k;i<=len;++i){if(sum[i]-pre>eps){flag=true;break;}pre = min(pre,sum[i-k+1]);}if(flag) l=mid;else r=mid;}return r;}
};
#include<iostream>
#include<stack>
#include<cstdio>
#define maxn 100005
using namespace std;long long nums[maxn];
long long sum[maxn]; //记录和int main(){int n,i;int l,r; //结果的左边界,右边界。long long ans,tmp; //最后的结果while(cin>>n){ans = l = r = 0;stack<int> stac; //单调递增栈for(i=0;i<n;++i){scanf("%lld",&nums[i]);sum[i]=i==0?nums[i]:sum[i-1]+nums[i];}nums[n]=0;for(i=0;i<=n;++i){while(!stac.empty()&&nums[stac.top()]>nums[i]){long long cur = nums[stac.top()];stac.pop();if(stac.empty()) tmp = sum[i-1]*cur;else tmp = (sum[i-1]-sum[stac.top()])*cur;if(tmp>ans) ans=tmp,r=i-1,l=stac.empty()?0:stac.top()+1;}stac.push(i);}cout<<ans<<endl;cout<<l+1<<" "<<r+1<<endl;}return 0;
}
同样的类型还有leetcode 84
![](/assets/blank.gif)
class Solution {
public:int largestRectangleArea(vector<int>& heights) {int len = heights.size(),res=0;heights.push_back(0);stack<int> stac;for(int i=0;i<=len;++i){while(!stac.empty()&&heights[stac.top()]>heights[i]){int tmp = heights[stac.top()];stac.pop();tmp = stac.empty()?tmp*i:tmp*(i-1-stac.top());res = max(res,tmp);}stac.push(i);}return res;}
};
lintcode 子数组问题(最全的面试子数组问题)相关推荐
- 要闻君说:阿里云联合8家芯片模组商推出“全平台通信模组”;北汽与小桔车服联合“京桔”;IBM要帮助印度公司打造5G战略!...
关注并标星星CSDN云计算 每周三次,打卡即read 更快.更全了解泛云圈精彩news go go go 嗨,大家好!偶是要闻君.盼望着.盼望着,放假的日子又临近了一步,抢先祝福各位看官们新年快乐哈 ...
- lintcode 矩阵问题(最全的面试矩阵问题)
前言 第三周我们计划刷关于矩阵的题目. 此次参与刷题的共五人(嘟嘟.琼琼.东东.大智.博主). 首次把宿舍的白板用上了.. 正题 28.搜索二维矩阵 每行都是有序的,且下一行第一个元素比上一行最后一个 ...
- 阿里云联合8家芯片商推“全平台通信模组”,加速物联网生态建设...
因为此次合作,其中部分合作伙伴已经收获了一个月新客户同比线下增长500%的惊人成果. 1月28日晚间消息,阿里云宣布联合业内8家芯片模组商推出"全平台通信模组",帮助用户通过该模组 ...
- redis cluster 集群 HA 原理和实操(史上最全、面试必备)
文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 经典图书:<Java高并发核心编程(卷1)> 面试必备 ...
- element ui 图片控件 排序_JAVA全栈面试前端基础之四 Vue+Element框架快速开发
本文主要包括以下4个内容 什么是ElementUI Vue 中引入ElementUI Vue+elementUI构建后台管理系统 开源项目推荐 1.什么是ElementUI 官网:https://el ...
- 最全Java面试180题:阿里11面试+网易+百度+美团!含答案大赠送!
网络编程 ISO模型与协议 http1.0:需要使用keep-alive参数来告知服务器端要建立一个长连接 http1.1:默认长连接.支持只发送header信息,可以用作权限请求.支持Host域. ...
- 史上最全Redis面试49题(含答案):哨兵+复制+事务+集群+持久化等
最全面试题答案系列 史上最强多线程面试44题和答案:线程锁+线程池+线程同步等 最全MySQL面试60题和答案 史上最全memcached面试26题和答案 史上最全Spring面试71题与答案 今天主 ...
- 阿里最全Java面试100题汇总:涵盖天猫、蚂蚁金服等面试题!含答案~
[阿里天猫.蚂蚁.钉钉面试题目] 1.微信红包怎么实现. 2.海量数据分析. 3.测试职位问的线程安全和非线程安全. 4.HTTP2.0.thrift. 5.面试电话沟通可能先让自我介绍. 6.分布式 ...
- BAT面试进阶:最全Memcached面试30题含答案
[memcached面试题目] Memcached服务在企业集群架构中应用场景? Memcached服务在不同企业业务应用场景中的工作流程? Memcached服务分布式集群如何实现? Memcach ...
最新文章
- 独家 | 这15个最热门的GitHub库你不可错过!
- java cutdown_Java并发程序入门介绍
- 产品分析报告|读书新贵——《网易蜗牛读书》
- LeetCode 94. 二叉树的中序遍历(中序遍历)
- 实验四——多分支结构及本章总结
- PyTorch中的model.modules(), model.children(), model.named_children(), model.parameters(), model.nam...
- 《自动驾驶网络解决方案白皮书》研读(一):电信产业自动驾驶网络探索与实践
- [Swift]LeetCode20. 有效的括号 | Valid Parentheses
- godaddy虚拟主机access数据库中文乱码的解决方法
- 《JavaScript高级程序设计(第3版)》.Nicholas.C.Zakas.扫描版.pdf
- css 背景渐变详解
- [OfficeExcel] OfficeExcel2010 第23讲 Excel饼图美化与PPT图表
- 数据分析|爬取14455个基金,千万别被人当成韭菜给割了
- linux驱动-设备驱动模型
- 利用群体遗传数据估计基因组上重组率
- IP地址计算---子网掩码确定和子网划分等详解 (附常见相关习题)
- 全文检索引擎ElasticSearch:文档管理、集成IK分词器
- pdf java解析_用java如何解析pdf文件
- 计算机课程教材审读意,用好部编本小学语文教材值得注意的11个问题
- mysql中常用的三种插入数据的语句
热门文章
- MS12 020补丁下载for sever 2003_x86_chs
- MaxDOS 8.0 发布,全面支持WIN7及X64系统
- 高级 Java 面试必问的三大 IO 模型,你 get 了吗?
- 2021年安全员-B证(陕西省)考试及安全员-B证(陕西省)找解析
- 243 mysql获取某个表中除了某个字段名外的所有字段名
- 小度音箱+esp8266做语音控制开关
- python音频处理相关库
- docker 删除所有未启动的容器_Docker数据卷容器及DockerFile
- 从C4D建模到Three.js实现闹钟产品360度展示效果(.stl,.obj,.mtl)
- 7-11如何塑造出令人发指的用户体验