4.1最大数组问题(算法导论)

呃 先查几句题外话 。。。
昨晚的一个梦。。。
那是战争刚结束的时候 梦里的我作为战争结束的幸存者 与 一堆莫名的 疲惫的人们一起跳伞 回家 (梦。。所以 我也不懂为啥跳伞回家。。)然后呢 莫名的我好像生气了 暴怒 ***了一个战友。。。(啊啊啊啊 我也不知道为啥子 只记得 蛮愤怒的 )然后 毕竟 犯罪了 坐牢是一定的 当时我就无比的绝望 绝望到冷静下来 寻找在监狱里可能 找到的乐趣 。。编程。。(呃 真的 无语 )啊 感慨 还是可以接受的嘛 (其实已经深深的绝望了 人生 就这样荒废了)突然 我想到了一件事
劳资 是在做梦啊啊 我没有犯罪 当时我就醒了 万分的轻松 就是那种 有了希望的 如释重负 的 舒服 当时我 就感觉到了一点 人生 如此 艰辛 易碎 千万 不要做出 让自己的人生失去意义的事 千万珍惜自己的人生 努力 无论如何不要 某一天醒来 发现自己已经 老了 或者 失去 了 最宝贵的时间。。
呃呃呃 我还做了一个梦 梦见我买了三条可爱的小狗 比猫便宜可能 努力吧 为了在两三年内
养得起 猫(英国短尾猫 抑或 布偶猫 一定 )
好了 进入今天的学习。。。。。。。。。。。。。。。。。。。。。。
最大数组问题 是买入及卖出的股票问题 (哇 好有用 )
第一最方法自然是 暴力求解
假设有n个输入 那么 也就有n方左右的计算量
从另外一个不同的角度来 看待 数据的输入 化为 价格变化 (本质上没有啥变化 只不过 是可以 累加了 耶)
那么 如果想用分治法来 解决呢
来 先回顾一下 分治法的过程。。。

分解 解决 合并

ok 那么原问题 第一分解 分解为两个部分 两个 子数组 完全ojbk
那么解决咋去解决呢
目的是为了去求最大的子数组 那么最大数组只有
三种情况 完全在左边 横跨中间 完全在右边
敲重点 重点
完全在左边 以及 右边 就用递归自己调用自己就OK了 天了噜 天了噜
这么神奇
剩下的是如何解决 横跨中间的问题如何解决
第二个 重点 如何去求呢 ???
分成俩部分 求出左边到中间最大的 加上中间到右边最大的 就是横跨最大的 复杂度为n左右

那么总的时间复杂度就降低到nlogn 至于为啥是nlogn呢

好看不 其实 在这个递归里 cn 只循环了logn+1 次 这就是为啥 时间复杂度降低了的原因
总上所述 这个问题 加深了对分治法的理解

全部评论

相关推荐

bg双非本科,方向是嵌入式。这次秋招一共拿到了 8 个 offer,最高年包 40w,中间也有一段在海康的实习经历,还有几次国家级竞赛。写这篇不是想证明什么,只是想把自己走过的这条路,尽量讲清楚一点,给同样背景的人一个参考。一、我一开始也很迷茫刚决定走嵌入式的时候,其实并没有一个特别清晰的规划。网上的信息很零散,有人说一定要懂底层,有人说项目更重要,也有人建议直接转方向。很多时候都是在怀疑:1.自己这种背景到底有没有机会2.现在学的东西到底有没有用3.是不是已经开始晚了这些问题,我当时一个都没答案。二、现在回头看,我主要做对了这几件事第一,方向尽早确定,但不把自己锁死。我比较早就确定了嵌入式这个大方向,但具体做哪一块,是在项目、竞赛和实习中慢慢调整的,而不是一开始就给自己下结论。第二,用项目和竞赛去“证明能力”,而不是堆技术名词。我不会刻意追求学得多全面,而是确保自己参与的每个项目,都能讲清楚:我负责了什么、遇到了什么问题、最后是怎么解决的。第三,尽早接触真实的工程环境。在海康实习的那段时间,对我触动挺大的。我开始意识到,企业更看重的是代码结构、逻辑清晰度,以及你能不能把事情说清楚,而不只是会不会某个知识点。第四,把秋招当成一个需要长期迭代的过程。简历不是一次写完的,面试表现也不是一次就到位的。我会在每次面试后复盘哪些问题没答好,再针对性补。三、我踩过的一些坑现在看也挺典型的:1.一开始在底层细节上纠结太久,投入产出比不高2.做过项目,但前期不会总结,导致面试表达吃亏3.早期有点害怕面试,准备不充分就去投这些弯路走过之后,才慢慢找到节奏。四、给和我背景相似的人一点建议如果你也是双非,准备走嵌入式,我觉得有几件事挺重要的:1.不用等“准备得差不多了”再投2.项目一定要能讲清楚,而不是做完就算3.不要只盯着技术,多关注表达和逻辑很多时候,差的不是能力,而是呈现方式。五、写在最后这篇总结不是标准答案,只是我个人的一次复盘。后面我会陆续把自己在嵌入式学习、竞赛、实习和秋招中的一些真实经验拆开来讲,希望能对后来的人有点帮助。如果你正好也在这条路上,希望你能少走一点弯路。
x_y_z1:蹲个后续
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务