算法笔记
程序有算法和数据结构组成,它们是不一样的,算法,是解决问题得方法。
而算法的实现,往往需要一些数据,所以算法也离不开数据结构得铺垫。
常见得算法有:二分、分治、递归、贪心、动态规划等
数据结构有:数组、链表,二叉树、图等
看到一个题的第一想法是看hash思想能不能用到,二分思想能不能用到,通常能确定中间指针走向的都是二分,这个题是不是适用于贪心算法,如果贪心算法解决不了,那么是什么原因导致贪心解决不了,是不是之后的某一步结果受限于之前的某一步,这样就再去考虑动态规划,是不是背包问题(常见01,完全),如果还不是或者动态规划的想法你想不出来,那看dfs和bfs是不是适用,bfs什么时候适用,dfs什么时候适用,很多情况下,巧用递归能更加方便简洁,如果你看到的题目是数据结构相关,那就思考一下之前做过的题,有没有相关的,数据结构的题基本都是完全理解了题目的意思就能做,思考方式很难改变,但是可以改变,坚持按照流程走,以后自动就变成了自己的思维方式,企业不怕你刷题,但是不缺刷题机器人,一定要多思考,主要刷题在leetcode中等难度及以下就行,如果遇到不会的问题一定不要强答,瞎说的话只会扣分,比如看见图相关的题,如果比较简单或者突然想出什么奇特的解决方案,可以做,不然直接说没学过图;几种排序、查找算法尽量做到不用动脑就可以写。
要一步步理解算法,而不是去背题。
下面列出LeetCode经典练习题
1 . 栈
2 . 堆
3 . 排序
4 . 贪心
5 . 位运算
6 . 树
7.数组
8.哈希
9.设计题
10.字符串
11.动态规划
12.递归
未完待续…