生而为人

程序员的自我修养

0%

[toc]

链表类

LinkedHashSet

java

LinkedHashMap

java

数组类

Stack

Queue

[toc]

二叉树

普通二叉树

二叉搜索树

N叉树

数据结构

  1. 数组
  2. 链表
  3. 队列
  4. 散列表
  5. 二叉树
  6. 跳表
  7. Trie数

算法

  1. 递归
  2. 排序
  3. 二分查找
  4. 搜索
  5. 哈希算法
  6. 贪心算法
  7. 分治算法
  8. 回溯算法
  9. 动态规划
  10. 字符串匹配算法

算法题分类

链表

  1. 翻转
  2. 两两翻转
  3. 有序链表合并
  4. 链表加法
  5. 链表减法

字符串

  1. 加法
  2. 减法
  3. 字符串转double

二叉树

  1. 先、中、后序遍历,递归非递归
  2. 层次遍历
  3. 蛇形层次遍历,两个栈实现

  1. 队列实现栈

队列

  1. 栈实现队列

动态规划

  1. 股票买入时机
  2. 硬币拿取方式数量

线性回归

误差

误差

[toc]

梳理

解题思考

  1. 每个题的时间/空间复杂度是多少,及最好/最坏情况的时间/空间复杂度

算法框架

前缀和

解决的问题:

题目特点(如何辨析是否使用):

经典题目:

差分数组

解决的问题:

题目特点(如何辨析是否使用):

经典题目:

双指针

解决的问题:

题目特点(如何辨析是否使用):

经典题目:

滑动窗口

解决的问题:

题目特点(如何辨析是否使用):

经典题目:

二分查找

解决的问题:

  1. 查找某个数
  2. 确定左/右边界线

题目特点(如何辨析是否使用):

经典题目:

  1. ⼒扣第 34 题「在排序数组中查找元素的第⼀个和最后⼀个位置」
  2. 力扣875. 爱吃⾹蕉的珂珂(中等)
  3. 力扣1011. 在D天内送达包裹的能⼒(中等)

田忌赛马

解决的问题:

题目特点(如何辨析是否使用):

经典题目:

  1. 力扣870. 优势洗牌(中等)

链表操作递归秘籍

解决的问题:

  1. 翻转链表
  2. 部分翻转链表

题目特点(如何辨析是否使用):

经典题目:

  1. LeetCode 206. 反转链表(简单)

  2. LeetCode 92. 反转链表 II(中等)

    ---------

括号题目

解决的问题:

  1. 平衡括号串(一)p119
  2. 平衡括号串(二)p120

题目特点(如何辨析是否使用):

经典题目:

  1. ⼒扣第 921 题「使括号有效的最少添加」
  2. ⼒扣第 1541 题「平衡括号字符串的最少插⼊次数」

单调栈

解决的问题:

  1. 后面第一个更大的数

思考:

  1. 为什么要用从后往前的方式入栈?
    1. 因为最后要输出的是更大的数的值,而不是索引,如果是从前往后入栈,入栈的元素就只能存入值,它的索引就丢了,而最终的结果是要按照这个索引把值替换掉,所以不能这么解

题目特点(如何辨析是否使用):

经典题目:

  1. LeetCode 上拿下如下题⽬:

    \496. 下⼀个更⼤元素I(简单)

    \503. 下⼀个更⼤元素II(中等)

    \739. 每⽇温度(中等)

    ----------

单调队列

解决的问题:

  1. 滑动窗口

题目特点(如何辨析是否使用):

经典题目:

  1. \239. 滑动窗⼝最⼤值(困难)

去重算法

解决的问题:

题目特点(如何辨析是否使用):

经典题目:

  1. LeetCode 上拿下如下题⽬:

    \316. 去除重复字⺟(中等)

    \1081. 不同字符的最⼩⼦序列(中等)

LRU

解决的问题:

题目特点(如何辨析是否使用):

经典题目:

LFU

解决的问题:

题目特点(如何辨析是否使用):

经典题目:

常数时间随机读取/删除数组元素(P153)

数据结构设计题

解决的问题:

题目特点(如何辨析是否使用):

经典题目:

  1. LeetCode:

    \380. 常数时间插⼊、删除和获取随机元素(中等)

    \710. ⿊名单中的随机数(困难)

如何在无限序列中随机抽取元素(P611)

解决的问题:

题目特点(如何辨析是否使用):

经典题目:

  1. 去 LeetCode 上拿下如下题⽬:

    \382. 链表随机节点(中等)

    \398. 随机数索引(中等)

笔记框架

解决的问题:

题目特点(如何辨析是否使用):

经典题目:

麦肯锡问题分析与解决技巧

失败的逻辑

数据技术篇

第2章 日志采集

2.0 要点

  1. 如何埋点数据,已保证能统计所需的业务数据,并适应不断增加的需求
  2. 如何过滤数据,清除掉攻击、爬虫等影响正常业务统计的数据
  3. 数据完善,根据某些手段对缺失信息进行补充。比如用登陆后的用户名,回填之前未登录时的用户名字段。但这样就不能区分是不是登陆操作了,如需要,可以增加字段标示。

第3章 数据同步

第4章 离线数据开发

第5章 实时技术

5.2.2 数据处理

1. 去重指标
2. 数据倾斜
3. 事务处理

第6章 数据服务

第7章 数据挖掘

数据模型篇

第8章 大数据领域建模综述

8.4 典型的数据仓库建模方法论

8.4.1 ER模型

建模过程分为三个阶段

  • 高层模型
  • 中层模型
  • 物理模型(底层模型)

8.4.2 维度模型

8.4.3 Data Vault模型

8.4.4 Anchor模型

第9章 阿里巴巴数据整合及管理体系

9.3 模型设计

9.3.2 模型层次

操作数据层(ODS)
公共维度模型层(CDM)
应用数据层(ADS)

9.3.3 基本原则