Menu Sidebar
Menu

October 2019

Longest Word in Dictionary through Deleting

给一个string和一个字典, 求字典中最长的字, 可以获得的通过删string的字符串. 设置一个i, 然后遍历字典中每个字符串, 然后遍历string的每个字符, 记录有多少个字符和字典的字符串的字符相同. 如果相同就记录为longest.

Beautiful Arrangement

给一个数字n, 返回所有可能的组合数组的个数, 这个数组满足两个条件, 一个是i上的数能乘除array[i], 一个是array[i]能整除i. 这个题直接dfs其实很好写, 但是太慢了, 加上剪枝也过不去. 看了下答案, 答案也是dfs和剪枝. 但是他用一个memo数组,表示use[i]表示是否用i这个index上的digit, 所以答案的dfs是直接数数组的个数, 即每个递归都表示是否在当前pos上的digit可以表示一个beautiful排序. 如果pos > N, 那么就意味着找到了一个数组满足这个条件.

Coin Change 2

给一个amount给一个coin数组, 问从coin中组成amount的多少种可能. 这个是典型的dp题, 设dp[i]是i块钱的找零个数. 那么我们就可以推断出, dp[i] += dp[i-coin[j]], 但是dp的初始值怎么设计? 我们设dp[0] = 1, 这意味着当, 当前的coin的和等于amount的时候, 算作一种找零方法.

Longest Palindromic Subsequence

最长回文子序列, 首先这个子序列就是substring, 这题用dp做, dp[i][j]表示在substring(s, i, j)的最长回文子序列. 这时,有一下集中情况: i==j, 这时候就是一个字符,当前最长回文子序列是1 i>j, 这时候越界了, 返回0 i<j时, 我们需要判断i和j的字符是不是相同, 如果相同, 继续探索i+1和j-1的答案并且加上i和j作为答案,即+2 如果不同, 则当前的i和j无法构成回文, 因为我们需要的是longest,所以选择i+1和j-1之间较大的那个.

Older Posts

书脊

这青苔碧瓦堆, 俺曾睡风流觉, 将五十年兴亡看饱.

October 2019
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
28293031