左程云算法 - 公开课笔记
第五节
题目:原地交换,不允许额外的空间
方法1:复杂度O(N/2)
1、左侧逆序
2、右侧逆序
3、整体逆序
方法2:循环右移
复杂度O(N^2)
方法3:
直到左右等长的时候,就不再交换了
第六节
方法一:暴力
方法二:一种不是最优解的解法:先对绝对值进行排序,再比较前后数字是否相同
方法三:最优解,双指针原理
两头指针,谁的绝对值大,谁动
首尾指针:划过的数字,可以保证以后再也不会出现这个结果
如果只关注所有波峰波谷的话,可能会出现波峰波谷失效的状态。
变换思路:求某一个位置i上方有多少水
暴力解法O(n^2)
怎么找左边和右边最大值?
生成某前缀数组最大值,作为预处理结构:
因为left辅助结构本身就是从左往右遍历的,所以在计算水量遍历时,可以用一个变量维持左侧已经遍历过部分的最大值,就没有必要另外维护一个left数组了,相当于在线计算left数组
彻底不用辅助结构,用双指针,时间复杂度仍为O(n)的解法:
leftmax、rightmax两个最大值,哪边最大值小,结算哪一边的水量。
移动的时候,更新自己一侧的最大值
当左侧最大值小于右侧最大值的时候,结算左侧水量,往右移动;
…
直到最后,两个指针相遇,停止。
对数器验证
左程云算法 - 公开课笔记相关推荐
- 左程云算法笔记(四)哈希表和有序表的使用、链表
左程云算法笔记(四) 哈希表的使用 有序表的使用 链表 单链表反转 (LC206) 双向链表反转 打印两个有序链表的公共部分 合并两个有序链表(LC21) 判断一个链表是否为回文结构 (LC234) ...
- LeetCode左程云算法课笔记
左程云算法课笔记 剑指Offer 位运算 ^运算符理解 寻找出现双中的单数 取出一个数最右边1的位置 找所有双出现中的两个单数 整数二进制奇数位偶数位交换 数组中全部出现k次返回出现一次的数 链表 判 ...
- 数据挖掘-理论与算法 公开课笔记
数据挖掘-理论与算法 公开课笔记 制作:纪元 本提纲遵循CC-BY-NC-SA协议 (署名-非商业性-相同方式共享) 最近更新时间:2020年3月4日01:48:00 文章目录 10.2.1.1 Da ...
- 数据结构与算法XS班-左程云第八节课笔记(归并排序和快速排序)
第8节 归并排序和快速排序 ##这是数据结构与算法新手班-左程云第八节课的笔记## 归并排序 归并排序实际上是一个很经典的排序方法,时间复杂度o(N*logN). 递归版本(图解排序算法(四)之归并排 ...
- 数据结构与算法XS班-左程云第一节课笔记(位运算、算法是什么、简单排序)
第1节 位运算.算法是什么.简单排序 ##这是数据结构与算法新手班-左程云第一节课的笔记## 1. 位运算 // 你们会不会表示一个数字的32位啊? // Java中int类型默认以32位二进制数在计 ...
- 左程云算法笔记总结-基础篇
基础01(复杂度.基本排序) 认识复杂度和简单排序算法 时间复杂度 big O 即 O(f(n)) 常数操作的数量写出来,不要低阶项,只要最高项,并且不要最高项的系数 一个操作如果和样本的数据量没有关 ...
- CSDN专访左程云,算法之道
算法的庞大让很多人畏惧,程序员如何正确的学习并应用于面试.工作中呢?今天,CSDN邀请了IBM软件工程师.百度软件工程师.刷题5年的算法热爱者左程云,来担任CSDN社区问答栏目的第二十六期嘉宾,届时会 ...
- 左程云算法笔记总结-基础提升篇
提升01(哈希) 认识哈希函数 哈希函数的输入一般需要是无穷尽的,没有限制:输出可以有一定的范围,比如MD5加密后产生的字符串可以有2的32次方-1种,用十六进制表示需要16个字符. 相同的输入对应相 ...
- 数据结构与算法JC班-左程云第一节课笔记(认识复杂度、对数器、二分法与异或运算)
第1节 认识复杂度.对数器.二分法与异或运算 程序=算法+数据结构,既然算法这么重要,每个人写出来的算法又不一样,那么怎么算是一个好的算法呢? 1.评估算法优劣的核心指标是什么? 时间复杂度(流程决定 ...
最新文章
- 不懂 Zookeeper?没关系,看这篇就够了
- findall与match、search区别及小括号的注意事项
- 【机器学习基础】xgboost系列丨xgboost建树过程分析及代码实现
- List与逗号分隔的字符串相互转换
- delphi tclientsocket接收不到返回数据_RS—485中教你主站发送报文结构、从站返回报文结构?系列11...
- jmeter负载测试测试_使用Apache JMeter负载测试Web应用程序
- netbeans 9_NetBeans 9抢先体验
- 饭卡问题(0-1背包的变形)
- MAC中用ImageMagick转换图像
- 展开和收起动画(jQuery)
- git 更换密码后,pull代码 fatal: Authentication failed for '
- TypeError: unsupported type for timedelta days component: Series
- 英文论文查重用什么软件比较好?
- 计算机三级考点3:构建宽带城域网的基本技术与方案。
- MSU 出品的 H.264 编码器比较 (2011.5)(包含VP8以及XviD)
- autocad ios 虚线_在CAD中怎么画出虚线?CAD画虚线方法介绍
- Linux--指令(六) cp
- Python数据分析入门(一)——初探数据可视化
- Web渗透攻击之vega
- 使用IDEA完成支付宝开放平台的Demo测试
热门文章
- 微信小程序实现文字随机颜色
- Datax从入门到精通03--Kerberos认证问题处理
- java计算机毕业设计ssm基于Vue的二手商品交易网站z40n1(附源码、数据库)
- ubuntu 装pyqt5_Ubuntu18.04安装pyQt5
- html5做密码形式的游戏,html5仿支付宝密码框的实现代码
- 怎么开通代付通道接口?
- 用 matplotlib 做交互式的票房分析
- 世界上第一第一台计算机叫什么,世界上第一台计算机叫什么
- IntelliJ IDEA的这个接口调试工具真是太太太太太好用了!
- C++程序设计基础 小母牛问题