算法与数据结构

为什么

编程的内功修炼
国内一线互联网公司的必要条件
硅谷互联网公司面试要求当场写算法题目

电话面试:collabedit.com
coderpad.io
白板面试:思路为主

有趣且实用

内容

图一

图二


怎么做

《Outliers》异类-不一样的成功启示录
1、Chunk it up
庖丁解牛:
图1
脉络链接
图2
2、Deliberate practicing
坚持、刻意练习
练习缺陷、不舒服、弱点的地方
不爽、枯燥

3、Feedback
即时反馈
主动型(自己找)
-高手代码(Github,Leetcode论坛)
-第一视角直播
被动型(高手指点)
-code review
-教练看你打,给你反馈
切题四件套
Clarification
Possible solutions
-compare(time/space)
-optimal(加强)
Coding (多写)
Test cases(测试案例)


复杂度 Big O notation

O(1):常数
O(long n):对数
O(n):线性时间
O(n^2)
O(n^3)
O(2^n):Fibonacci array的普通运算
O(n!)

图三

ps:只看最高复杂度的运算
主定律用于解决算法:

图四


知识点解析

三分学习,七分练

注重练习弱项
LeetCode:
题目 + 分类(Topics) + 公司归档
做题
时间复杂度
Editor
Solution from LeetCode
Discussion Panel in LeetCode


Array数组:


Access:O(1)
Insert:平均O(n)
Delete:平均O(n)

Linked List 链表:

改善数组的插入删除操作
元素个数未知

查询:O(n)
插入:O(1)

删除:O(1)

Doubly Linked List

你可能感兴趣的:(算法与数据结构)