专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

买卖股票的最佳时机(多解法)

  普通暴力解publicintmaxProfit(int〔〕prices){if(nullpricesprices。length2(prices。length2prices〔0〕prices〔1〕)){return0;}intans0;for(inti0;iprices。length1;i){for(intji1;jprices。length;j){if(prices〔j〕prices〔i〕){ansMath。max(ans,prices〔j〕prices〔i〕);}}}returnans;}暴力递归解publicintmaxProfit(int〔〕prices){if(nullpricesprices。length2(prices。length2prices〔0〕prices〔1〕)){return0;}returnprocess(prices,0,1,1);}publicintprocess(int〔〕prices,inti,intbuyDay,intsellDay){if(prices。lengthi){if(buyDay1buyDaysellDayprices〔buyDay〕prices〔sellDay〕){returnprices〔sellDay〕prices〔buyDay〕;}return0;}在第i天不操作intp0process(prices,i1,buyDay,sellDay);在第i天买入intp10;if(buyDay1sellDay1){p1process(prices,i1,i,sellDay);}在第i天卖出intp20;if(buyDay1sellDay1){p2prices〔i〕prices〔buyDay〕?prices〔i〕prices〔buyDay〕:0;}returnMath。max(p0,Math。max(p1,p2));}
  另一种暴力递归可推导出动态规划:publicintmaxProfit(int〔〕prices){if(nullpricesprices。length2(prices。length2prices〔0〕prices〔1〕)){return0;}returnprocess(prices,0,0);}publicintprocess(int〔〕prices,inti,intflag){basecaseif(i0){if(flag0){return0;}returnprices〔0〕;}if(flag0){第i天不持有股票returnMath。max(process(prices,i1,1)prices〔i〕,process(prices,i1,0));}else{returnMath。max(process(prices,i1,1),prices〔i〕);}}动态规划解
  publicintmaxProfit(int〔〕prices){if(nullpricesprices。length2(prices。length2prices〔0〕prices〔1〕)){return0;}intlenprices。length;dp〔i〕〔0〕下标为i这天结束的时候,不持股,手上拥有的现金数dp〔i〕〔1〕下标为i这天结束的时候,持股,手上拥有的现金数int〔〕〔〕dpnewint〔len〕〔2〕;初始化:不持股显然为0,持股就需要减去第1天(下标为0)的股价dp〔0〕〔0〕0;dp〔0〕〔1〕prices〔0〕;从第2天开始遍历for(inti1;ilen;i){dp〔i〕〔0〕Math。max(dp〔i1〕〔0〕,dp〔i1〕〔1〕prices〔i〕);dp〔i〕〔1〕Math。max(dp〔i1〕〔1〕,prices〔i〕);}returndp〔len1〕〔0〕;}
  在暴力递归的基础上加缓存,转变成记忆化搜索:
  最终版的动态规划是怎么写出来的呢?请看下图:
  单调栈解
  publicintmaxProfit(int〔〕prices){if(nullpricesprices。length2(prices。length2prices〔0〕prices〔1〕)){return0;}intans0;intmin0;StackIntegerupStacknewStackInteger();inttopIndex1;记录栈顶下标int〔〕upStacknewint〔prices。length〕;for(inti0;iprices。length;i){由小到大的单调栈while(!upStack。empty()upStack。peek()prices〔i〕){while(topIndex1upStack〔topIndex〕prices〔i〕){intpupStack。pop();intpupStack〔topIndex〕;intminupStack〔0〕;if(pmin){ansMath。max(ans,pmin);}}if(upStack。empty()){minprices〔i〕;}upStack。push(prices〔i〕);upStack〔topIndex〕prices〔i〕;}栈顶元素未被处理if(upStack。size()1){if(topIndex0){intpupStack。pop();intpupStack〔topIndex〕;intminupStack〔0〕;if(pmin){ansMath。max(ans,pmin);}}returnans;}
  直接使用java。util。Stack会对性能会造成影响,因此这里利用数组来优化。滑动窗口解publicintmaxProfit(int〔〕prices){if(nullpricesprices。length2(prices。length2prices〔0〕prices〔1〕)){return0;}minWindow由小到大LinkedListIntegerminWindownewLinkedListInteger();for(intR0;Rprices。length;R){while(!minWindow。isEmpty()prices〔minWindow。peekLast()〕prices〔R〕){minWindow。pollLast();}minWindow。addLast(R);intbuyPriceprices〔minWindow。peekFirst()〕;intsellPriceprices〔R〕;if(sellPricebuyPrice){ansMath。max(ans,sellPricebuyPrice);}}returnans;}线段树解
  publicintmaxProfit(int。。。prices){if(nullpricesprices。length2(prices。length2prices〔0〕prices〔1〕)){return0;}intans0;SegmentTreesegmentTreenewSegmentTree(prices);for(inti0;iprices。length;i){intbuyPriceprices〔i〕;intsellPricesegmentTree。query(i1,prices。length,1,prices。length,1);ansMath。max(ans,sellPricebuyPrice);}returnans;}publicclassSegmentTree{privateint〔〕data;privateint〔〕max;publicSegmentTree(int〔〕src){intNsrc。length1;datasrc;maxnewint〔N2〕;build(1,N1,1);}privatevoidpushUp(inti){max〔i〕Math。max(max〔i1〕,max〔i11〕);}privatevoidpushDown(inti){}privatevoidbuild(intl,intr,inti){if(lr){max〔i〕data〔l1〕;return;}intmid(lr)1;build(l,mid,i1);build(mid1,r,i11);pushUp(i);}publicintquery(intL,intR,intl,intr,inti){if(LlrR){returnmax〔i〕;}intmid(lr)1;pushDown(i);intleft0;intright0;if(Lmid){leftquery(L,R,l,mid,i1);}if(Rmid){rightquery(L,R,mid1,r,i11);}returnMath。max(left,right);}}树状数组解
  publicintmaxProfit(int〔〕prices){if(nullpricesprices。length2(prices。length2prices〔0〕prices〔1〕)){return0;}intans0;IndexTreeindexTreenewIndexTree(prices。length);for(inti0;iprices。length;i){indexTree。set(i1,prices〔i〕);}for(inti1;iprices。length;i){intminindexTree。min(i1);if(prices〔i〕min){ansMath。max(ans,prices〔i〕min);}}returnans;}publicstaticclassIndexTree{privateint〔〕tree;privateintN;0位置弃而不用publicIndexTree(intsize){Nsize;treenewint〔N1〕;for(inti1;iN;i){tree〔i〕Integer。MAXVALUE;}}返回〔1,index〕范围最小值publicintmin(intindex){intretInteger。MAXVALUE;while(index0){retMath。min(tree〔index〕,ret);indexindexindex;}returnret;}indexindex:提取出index最右侧的1出来假设index为:0011001000indexindex:0000001000publicvoidset(intindex,intv){while(indexN){tree〔index〕Math。min(tree〔index〕,v);indexindexindex;}}}最优解publicintmaxProfit(int〔〕prices){if(nullpricesprices。length2(prices。length2prices〔0〕prices〔1〕)){return0;}intans0;intminPreprices〔0〕;for(inti1;iprices。length;i){if(prices〔i〕minPre){ansMath。max(ans,prices〔i〕minPre);}else{minPreprices〔i〕;}}returnans;}
  以上花式炫技,你学废了吗?

国乒陪练不讲人情世故!爆冷淘汰世界第一,又单局110赢王艺迪2022乒乓球全锦赛正在进行中,全锦赛是出了名的难打,奥运冠军经常会在这里爆冷输球,但也有许多球员在比赛中脱颖而出。如果说此次比赛男乒进步最大的是四项比赛全部站上领奖台的林高远,那废废丨11月10今日最新铜价格行情今天铜行情报价长江现货1铜价67420元吨,涨580元吨无氧铜丝(硬)68580元吨,涨580元吨漆包线价72620元吨,涨580元吨A00铝价18550元吨,跌50元吨广东现货1一揉二按三刮,激活天然心脏支架,可以预防心梗远离血栓现在已入冬,寒冷气候,对朋友们的身体是一个很大的考验,特别是有心脑血管疾病的人群,对他们来说更是一个巨大的考验!前段时间才看到一个新闻21岁男生突发心肌梗死,1小时竟然取出10块血湖人内讧加剧,浓眉哥正式申请交易新赛季开打至今11场比赛,浓眉场均能够贡献23分10。2个篮板1。9次盖帽并且场均送出1。4次抢断!据湖人随队记者史密斯透漏,浓眉哥已经通过经纪团队,正式向湖人队管理层提交了转会申本西蒙斯两笔交易方案曝光!火箭诚意十足,联手东契奇可争冠?近日,詹姆斯通过推特为欧文发声,他认为后者已经为之前的不当行为道歉,他理应回到球场打球。NBA总裁亚当萧华也与欧文进行了会面,并且郑重声明他不是反犹太主义者,萧华随后表示联盟将与篮狂野西部排名黑马跌出前八,勇士即将上岸,湖人进退两难北京时间11月11日,NBA只安排了四场比赛,其中西部球队参与了两场,具体战况为独行侠不敌奇才,以及开拓者力克鹈鹕,而如此一来,狂野西部排名又发生了新变化,目前的形势可以简单总结为7种冬季高发病,3种存在致命风险,赶紧了解冬天是养生黄金期,也是一些疾病的高发期。大家在养生时除了要注意一些生活细节,还要了解这些高发病的常见症状和防治措施等,以防不时之需。本期带您详细了解急性心梗脑中风普通感冒流感关节炎王艺迪替孙颖莎报仇!打出全锦赛第三个011还能赢,国乒藏龙卧虎北京时间11月11日,全锦赛的一场巅峰对决正式落幕,王艺迪最终43惊险的绝杀孙铭阳,虽然被打出了011的比分,但是笑到最后的却是王艺迪,她也成为了又一个率先晋级决赛的选手。这场比赛勇士交易得到浓眉与威少,薪资匹配,不得不交易?勇士图什么?勇士交易得到浓眉与威少,薪资匹配,不得不交易?勇士图什么?勇士克莱的4060万格林的2581万怀斯曼的960万库明加的574万鲍德温的223万2028年首轮,合计8398万。湖人这Berta2023年秋季婚纱礼服ampampquot罗马ampampquot系列如何使一个美丽的时刻永远持续下去?Berta接受了这一挑战,创造了罗马系列,2023年秋季婚纱系列,它是永恒的,是力量和优雅的典范。这些婚纱礼服融合了优雅的传统和引人注目的现代元素扫地出门!皇马点名锋线巨星转会离队!1亿欧攻击手有望入替对于皇马来说,在休赛期到来之前,球队的状态似乎并不太理想。在积分榜上,他们领头羊的位置已经被对手所取代。让很多球迷们非常担心的是,由于皇马本赛季的阵容结构实际上并不理想,在他们的主
徐志摩追求诗与远方的人,永远在路上文亭后西栗图片来源于网络,侵删缘分是一种很奇怪的东西,不知何时,不知何地,也不知是何种原因,便让两个从前不相识的人有了关联。当年,张幼仪的四哥张嘉璈在浙江一中校刊上,看到徐志摩意气揭秘王光美的四个哥哥任何职?作为20世纪最具传奇色彩的女性之一,王光美的一生之中拥有着各种各样的身份,她曾经是出身名门的大家闺秀,读书时还曾是学生之中非常有名的数学三王之一。除此以外,她还是中国第一个原子物理新华财经晚报5月16日重点关注国家发改委煤炭生产经营企业不得通过捆绑销售现货等方式变相提高交易价格。国家统计局5月份经济运行有望得到改善。人民银行等量续做1000亿元MLF,利率与此前持平。银保监会积极造型前卫动感本田新一代HR近日,海外媒体曝光了一组本田HRV车型图,新车是一款全新的紧凑型SUV,而且是一款必须通过可取性功能性和可用性吸引人的消费产品。外观方面,新车的线条和光滑的表面营造出一种强烈的运动莆田最有名气的瞎眼算命先生,是如何出老千的?莆田作家Vol。1403莆田最有名气的瞎眼算命先生,是如何出老千的?文陈秋钦图木痴莆田最有名气的算命先生吓瞎(化名),他的名号整个黄石镇无人不知。民间传吓瞎神算,掐指便知你吉凶祸福曾伟权一生未娶,59岁病逝无子女送终,生命最后与一只小狗相伴01出露尖角1960年11月22日出生于中国香港的曾伟权,父亲是一名富商,所以在他出生以后,他就一直过着无忧无虑的生活。因为是男孩,所以他的父亲心中一直期盼着自己的儿子能够继承自己618前拒绝价格战TCL借MiniLED抢占新高地北京商报讯5月16日,中国电视的全球领跑者TCL正式召开了万象星河Q10GMiniLED电视新品发布会。本次发布的TCLQ10G电视全系标配了MiniLED微米级点阵式控光技术,共瘦到病态整容成瘾,痴迷于少女人设,内娱的畸形审美太可怕近年来,白幼瘦的审美风潮愈刮愈烈,在这股风潮下,娱乐圈的畸形审美也愈发严重起来。瘦到病态01陈鲁豫陈鲁豫是个主持人,但她对瘦的痴迷,丝毫不比女明星少。曹景行形容她,你瘦得就剩下一根离婚4年,再看玖月奇迹王小玮王小海的境遇,夫妻差距一目了然不知不觉间,距离王小海王小玮离婚已经过了4年时间,不少网友好奇如今的他们,发展得怎么样了?玖月奇迹组合,自2020年将离婚的消息公布之后,至今再没有同框过,他们的解散让很多观众惋惜人过60岁后,到底需要多少存款才能安享晚年?3位老人说出心里话导语在以前的社会,大多数老人还是秉承着养儿防老的想法,自己挣的钱大多都付出给子女,希望子女可以有大出息,那老人再辛苦也都觉得值得了,毕竟子女有了大出息,老人也可以跟着享福。但如今有曹丕看见两头牛打架,让曹植作诗,诗中不能出现牛,结果流传千古人们常讲乱世出英雄,三国时期可谓人才辈出,各个领域都有位居巅峰之位的大家。论武功实力,有常山赵子龙武圣关羽熊虎猛张飞古之恶来典韦论文学才能,有神明诸葛亮冢虎司马懿凤雏庞统论德才兼备
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网