第五节

题目:原地交换,不允许额外的空间


方法1:复杂度O(N/2)
1、左侧逆序
2、右侧逆序
3、整体逆序

方法2:循环右移
复杂度O(N^2)

方法3:
直到左右等长的时候,就不再交换了

第六节



方法一:暴力

方法二:一种不是最优解的解法:先对绝对值进行排序,再比较前后数字是否相同


方法三:最优解,双指针原理
两头指针,谁的绝对值大,谁动
首尾指针:划过的数字,可以保证以后再也不会出现这个结果



如果只关注所有波峰波谷的话,可能会出现波峰波谷失效的状态。

变换思路:求某一个位置i上方有多少水

暴力解法O(n^2)

怎么找左边和右边最大值?
生成某前缀数组最大值,作为预处理结构:


因为left辅助结构本身就是从左往右遍历的,所以在计算水量遍历时,可以用一个变量维持左侧已经遍历过部分的最大值,就没有必要另外维护一个left数组了,相当于在线计算left数组


彻底不用辅助结构,用双指针,时间复杂度仍为O(n)的解法:
leftmax、rightmax两个最大值,哪边最大值小,结算哪一边的水量。
移动的时候,更新自己一侧的最大值
当左侧最大值小于右侧最大值的时候,结算左侧水量,往右移动;

直到最后,两个指针相遇,停止。


对数器验证

左程云算法 - 公开课笔记相关推荐

  1. 左程云算法笔记(四)哈希表和有序表的使用、链表

    左程云算法笔记(四) 哈希表的使用 有序表的使用 链表 单链表反转 (LC206) 双向链表反转 打印两个有序链表的公共部分 合并两个有序链表(LC21) 判断一个链表是否为回文结构 (LC234) ...

  2. LeetCode左程云算法课笔记

    左程云算法课笔记 剑指Offer 位运算 ^运算符理解 寻找出现双中的单数 取出一个数最右边1的位置 找所有双出现中的两个单数 整数二进制奇数位偶数位交换 数组中全部出现k次返回出现一次的数 链表 判 ...

  3. 数据挖掘-理论与算法 公开课笔记

    数据挖掘-理论与算法 公开课笔记 制作:纪元 本提纲遵循CC-BY-NC-SA协议 (署名-非商业性-相同方式共享) 最近更新时间:2020年3月4日01:48:00 文章目录 10.2.1.1 Da ...

  4. 数据结构与算法XS班-左程云第八节课笔记(归并排序和快速排序)

    第8节 归并排序和快速排序 ##这是数据结构与算法新手班-左程云第八节课的笔记## 归并排序 归并排序实际上是一个很经典的排序方法,时间复杂度o(N*logN). 递归版本(图解排序算法(四)之归并排 ...

  5. 数据结构与算法XS班-左程云第一节课笔记(位运算、算法是什么、简单排序)

    第1节 位运算.算法是什么.简单排序 ##这是数据结构与算法新手班-左程云第一节课的笔记## 1. 位运算 // 你们会不会表示一个数字的32位啊? // Java中int类型默认以32位二进制数在计 ...

  6. 左程云算法笔记总结-基础篇

    基础01(复杂度.基本排序) 认识复杂度和简单排序算法 时间复杂度 big O 即 O(f(n)) 常数操作的数量写出来,不要低阶项,只要最高项,并且不要最高项的系数 一个操作如果和样本的数据量没有关 ...

  7. CSDN专访左程云,算法之道

    算法的庞大让很多人畏惧,程序员如何正确的学习并应用于面试.工作中呢?今天,CSDN邀请了IBM软件工程师.百度软件工程师.刷题5年的算法热爱者左程云,来担任CSDN社区问答栏目的第二十六期嘉宾,届时会 ...

  8. 左程云算法笔记总结-基础提升篇

    提升01(哈希) 认识哈希函数 哈希函数的输入一般需要是无穷尽的,没有限制:输出可以有一定的范围,比如MD5加密后产生的字符串可以有2的32次方-1种,用十六进制表示需要16个字符. 相同的输入对应相 ...

  9. 数据结构与算法JC班-左程云第一节课笔记(认识复杂度、对数器、二分法与异或运算)

    第1节 认识复杂度.对数器.二分法与异或运算 程序=算法+数据结构,既然算法这么重要,每个人写出来的算法又不一样,那么怎么算是一个好的算法呢? 1.评估算法优劣的核心指标是什么? 时间复杂度(流程决定 ...

最新文章

  1. 不懂 Zookeeper?没关系,看这篇就够了
  2. findall与match、search区别及小括号的注意事项
  3. 【机器学习基础】xgboost系列丨xgboost建树过程分析及代码实现
  4. List与逗号分隔的字符串相互转换
  5. delphi tclientsocket接收不到返回数据_RS—485中教你主站发送报文结构、从站返回报文结构?系列11...
  6. jmeter负载测试测试_使用Apache JMeter负载测试Web应用程序
  7. netbeans 9_NetBeans 9抢先体验
  8. 饭卡问题(0-1背包的变形)
  9. MAC中用ImageMagick转换图像
  10. 展开和收起动画(jQuery)
  11. git 更换密码后,pull代码 fatal: Authentication failed for '
  12. TypeError: unsupported type for timedelta days component: Series
  13. 英文论文查重用什么软件比较好?
  14. 计算机三级考点3:构建宽带城域网的基本技术与方案。
  15. MSU 出品的 H.264 编码器比较 (2011.5)(包含VP8以及XviD)
  16. autocad ios 虚线_在CAD中怎么画出虚线?CAD画虚线方法介绍
  17. Linux--指令(六) cp
  18. Python数据分析入门(一)——初探数据可视化
  19. Web渗透攻击之vega
  20. 使用IDEA完成支付宝开放平台的Demo测试

热门文章

  1. 微信小程序实现文字随机颜色
  2. Datax从入门到精通03--Kerberos认证问题处理
  3. java计算机毕业设计ssm基于Vue的二手商品交易网站z40n1(附源码、数据库)
  4. ubuntu 装pyqt5_Ubuntu18.04安装pyQt5
  5. html5做密码形式的游戏,html5仿支付宝密码框的实现代码
  6. 怎么开通代付通道接口?
  7. 用 matplotlib 做交互式的票房分析
  8. 世界上第一第一台计算机叫什么,世界上第一台计算机叫什么
  9. IntelliJ IDEA的这个接口调试工具真是太太太太太好用了!
  10. C++程序设计基础 小母牛问题