机试带有输入输出,下面标红色的需要练习打代码,其他看一眼就行
!!!做每题之前都要想一下这道题为什么会想到用这种方法!!!
一、图论
最短路径:leetcode743(djkstra)、399(floyd);poj1847、1062(djkstra)、2240(floyd、bellman)、3259(bellman)
拓扑排序:leetcode210(模板题)、310;poj1094(模板题)、2585(进阶应用)
二分图:leetcode785(判断是否是二分图);poj3041、3020(最大匹配的应用)
最小生成树:poj2485(模板题)、1789
二、动态规划
!!!将问题的求解转化为子问题的求解,比如dp[i]可以由dp[i-1]或者dp[i-2]之类的求得!!!
背包问题:leetcode322(完全);poj3624(经典01)、1837(多重)、1276(多
重)、2063(完全)、1384(完全)
数字三角形:poj3176
二进制:leetcode338
括号匹配:leetcode32
树形动规:leetcode96、337;poj1463
爬楼梯类型(第i步的结果与前几步有关):leetcode746、70、91、639
最大连续子序列和:leetcode53、152;最大跳跃子序列的和:leetcode740、213;连续子序列的和:leetcode303
LIS(最长上升子序列):leetcode646、673;poj1836
LCS(最长公共子序列):poj1080、1159;leetcode583、712(这种题要注意字符串是从下标0还是1储存的)
字符串匹配:leetcode72、10;poj3267
走二维地图:leetcode63、97、174
回文串:leetcode5、647、516;poj3280、1159(这道也属于LCS)
二维dp:leetcode304
三、搜索
二分搜索:leetcode81、69、50、4
bfs:leetcode111;poj3126、2251
回溯法:leetcode47、77、90、39、40、51、79、93、17、22、491;poj1321
dfs:leetcode111、99、501、95、108、98、105、106(这七道二叉搜索树一般不是跟dfs有关就是跟中序遍历有关)、200、329、37、(87、802);poj3620、2488、3009、2531、2676、(3140)
四、数据结构
数组:leetcode41、54、238
排序:leetcode56、349;poj2299、2388
数字:leetcode7、9
双指针:leetcode75、88、1、15、18、42、713
链表:leetcode2、19、23、24、25、61、82、92、86
字符串:leetcode557、14、8、38、30、(68、76);poj3080、1035
并查集:leetcode684、721、130(bfs也挺好)
哈希表:leetcode771、3、36、49、697、336;poj1840、(1186)、2503
set:leetcode500、720
栈:leetcode332、20、71、84、85
huffman树:poj1862
出入度:leetcode732
树状数组:leetcode307、493;hdu1166;poj2299(逆序对)、2352(星星等级)、1195(二维数组)
线段树:leetcode307;poj2828、2750
五、贪心法
leetcode55、45、630、122
poj1700、1862、2393、1017、2287
最小生成树+最短路径
七、其他题型
遍历一次:leetcode121(单次股票收益)、123(两次股票收益)、334(LIS)