Longest Common Subsequence
最长公共子序列, 这题就是dp. dp[i][j]表示在第一个string的i位和第二个string的j位的最长公共子序列. dp[i][j] = dp[i – 1][j – 1] when A[i] == B[j], otherwise dp[i][j] = max(dp[i][j – 1], dp[i – 1][j])
最长公共子序列, 这题就是dp. dp[i][j]表示在第一个string的i位和第二个string的j位的最长公共子序列. dp[i][j] = dp[i – 1][j – 1] when A[i] == B[j], otherwise dp[i][j] = max(dp[i][j – 1], dp[i – 1][j])
模拟一个银行系统,存钱取钱. 主要是判断一下各种可能情况.
给一个数组, 找最小的index, 使i mod 10 == nums[i]. 用一个j表示一个从0->9的循环. 然后挨个找.
给一个字符串组和一个target字符串, 问有多少个pair,组成target. 这题字符串组有重复, 所以先要counting一下, 然后切割target, 因为切割后的两个部分有可能相同, 相同的时候是C(n,n-1)个, 不同的时候是n* n-1个.
把一个字符串分割成k组, 如果不满k,就用fill字符补.
给一个数组, 是东西的价格, 可以买二送一, 求花费. 要求送的cost比买的要少.
给一个数组, 问这个数组有多少个数字是至少有一个数字严格比它大还有一个严格比它小的.
给一个数组, 找到两个数, i<j的差的最大值. 这题因为要求两个数有顺序, 所以只需要扫一次, 并且一直track最小值,就可以.
翻一个只有0和1的矩阵, 只能翻一个行或者一个列. 返回能不能翻成全1或者全0矩阵. 这题只需要判断第一行, 见到0不动, 见到1翻过来,这样第一行就是全0. 然后通过判断其他行是不是全1或者全0, 即可知道答案. 证: 如果第一行已经全0, 其他某行, 非全1或者全0, 那么这行通过行翻转, 肯定不能得到全1或者全0, 但是通过列翻转, 又破坏第一行的全0,故此.