小黑昨日面试收到激励,摆正了自己的态度,意识到了自己的不足今后继续积累教训的leetcode之旅:115. 不同的子序列

记忆化搜索递归

class Solution:
    def numDistinct(self, s: str, t: str) -> int:
        # 每一次递归的逻辑:
        #   (1) 字符串的尾部相等的情况,s[i] = s[j]
                # xxxxxs 
                # kkkks
                # dfs(i)(j) = dfs(i-1)(j) + dfs(i-1)(j-1)
        #   (2) 字符串尾部不相等的情况
                # xxxxx1
                # kkkk2
                # dfs(i)(j) = dfs(i-1)(j)
        # 初始化缓存
        arr = [[-1] * len(t) for _ in range(len(s))]
        def dfs(i, j):
            if j == -1:
                return 1
            if i == -1:
                return 0
    
            if arr[i][j] != -1:
                
                return arr[i][j]
            if s[i] == t[j]:
                arr[i][j] = dfs(i - 1, j) + dfs(i - 1, j - 1)
            else:
                arr[i][j] = dfs(i - 1, j)
            return arr[i][j]
        return dfs(len(s) - 1, len(t) - 1)

在这里插入图片描述

动态规划

class Solution:
    def numDistinct(self, s: str, t: str) -> int:
        # 每一次递归的逻辑:
        #   (1) 字符串的尾部相等的情况,s[i] = s[j]
                # xxxxxs 
                # kkkks
                # dfs(i)(j) = dfs(i-1)(j) + dfs(i-1)(j-1)
        #   (2) 字符串尾部不相等的情况
                # xxxxx1
                # kkkk2
                # dfs(i)(j) = dfs(i-1)(j)
        # 初始化动态规划数组
        dp = [[0] * (len(t)+1) for _ in range(len(s)+1)]
        for i in range(len(s)+1):
            for j in range(len(t)+1):
                if j == 0:
                    dp[i][j] = 1
                elif i == 0:
                    dp[i][j] = 0
                elif s[i-1] != t[j-1]:
                    dp[i][j] = dp[i-1][j]
                else:
                    dp[i][j] = dp[i-1][j] + dp[i-1][j-1]
        return dp[len(s)][len(t)]

在这里插入图片描述

小黑生活

面试被面试官指出计算机基础不行,需要把期望薪资进一步降低,让小黑意识到这几年路有些走偏,心有些浮躁,晚饭手撕拉面

在这里插入图片描述
在这里插入图片描述

小黑在实习中受到内存限制,第一次尝试用了新的方法优化,奏效!!得到信心

在这里插入图片描述
在这里插入图片描述

晚上独自想吃个麻辣烫,但是没开门,于是独自吃串喝闷酒

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

早餐麦当劳

在这里插入图片描述
在这里插入图片描述

通勤+读英语

在这里插入图片描述
在这里插入图片描述

午饭疯狂星期四

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

来个麦当劳圆筒

在这里插入图片描述

咖啡曲奇动态规划算法

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值