arr


数组

  1. 考虑双向遍历数组

快慢指针

应用:原数组上删除

用法:实质是快慢指针,其中一个做iterator,另一个做counter

双向双指针

应用:原数组上rotate或者reverse,in place交换,求和

用法:前后两个指针分别向中间移动,监测left < right.

建立计数器

应用:输入只包含特定数字/字母

用法:创建O(1)数组(实质上是hashtable/hashmap)

滑动窗口 Sliding Window

窗口大小固定

应用:求固定长度窗口内最大值、最小值、中位数

用法:借助额外数据结构存储,考虑HashSet、Monotonic Queue、数组等。

窗口大小不固定

应用:窗口内不同元素固定为k个,求满足条件窗口长度或个数

用法:和单向双指针类似,先移动右指针,不满足条件后移动左指针

Binary Indexed Tree

见tree


Author: csy99
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source csy99 !
评论
 Previous
dl_intro dl_intro
Reference本篇为斋藤康毅先生所编写《深度学习入门:基于python的理论和实现》中文译本的笔记。书中所附源码可见Github Repo。 感知机 接受多个输入信号,输出一个信号。信号只有0/1两种取值。 神经元会计算输入信号的总和
2020-05-21
Next 
stack-queue stack-queue
栈&队列 基本上结合其他问题考得比较多 需要实现特殊功能,考虑使用多个栈/队列 双端队列 Deque在java有现成接口,可以用LinkedList实现 单调栈 Mono Stack保证栈中数据是有序的,可以配合滑动窗口题使用
2020-05-16
  TOC