中级农民
- 积分
- 281
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2012-4-19
- 最后登录
- 1970-1-1
|
44 Wildcard Matching
看自己的答案就挺好的
关键是要记住
I, j = ([j] == *) && (dp[i-1][j-1] == true || dp[i-1][j] == true || dp[i][j-1] == true)
自己的solution挺好 最佳solution能省掉dp存储空间
不需要dp的原因是因为你其实不需要保整个dp只需要保存当前计算所需要的几个variable或者一行的status
要画出这个矩阵的样子
写出dp[i][j]的逻辑判断
I, j = ([i] ==[j] || [j] == ?) && dp[i-1][j-1] == true
I, j = ([j] == *) && (dp[i-1][j-1] == true || dp[i-1][j] == true || dp[i][j-1] == true)
起始条件要注意 s为空时 p可以为多个***
36 Valid Sudoku
想法很巧妙
首先可以用new HashSet()
每个i,j construct一个不同的key 来代表number in row, number in column, number in block: i/3 and j/3
牛逼一点可以用三个boolean[]
但是要精确把握i,j到 m,n的mapping
188 Best Time to Buy and Sell Stock IV
Stock题目的general solution
dp[k, i] = max(dp[k, i-1], prices[i] - prices[j] + dp[k-1, j-1]), j=[0..i-1]
需要两个dp一个存min一个存dp
看自己的答案怎么简化解法 |
|