ARTS挑战第九周

Algorithm

703. 数据流中的第 K 大元素 使用一个大小为K的小根堆,对于新来的元素,如果堆没有满,则直接入堆。否则判断其是否大于堆顶,大于则替换堆顶。返回堆顶元素。题目简单,主要想验证下自己写的堆。

1143. 最长公共子序列 dp[i][j] 表示text1前i个字符与text2前j个字符的最长公共子序列 . dp[i][j] = dp[i-1][j-1] if text1[i-1]==text2[j-1] else max(dp[i-1][j],dp[i][j-1]) . 意思是,如果text1第i个字符和text2第j个字符相等,那么这个字符一定在公共序列中 ; 如果不相等,则可能在也可能都不在,此时为dp[i-1][j],dp[i][j-1],dp[i-1][j-1]中的一种,其中dp[i-1][j-1]一定不比前面两个大,因此可以省略。 base case:dp[0][j]=0, dp[i][0]=0。这里如果采用状态压缩,则需要在更新dp[j]前先保存到一个变量prev,等到更新dp[j+1]时,这个变量就是dp[i-1][j-1].然后这个变量需要在每层外循环时初始化为0。

712. 两个字符串的最小ASCII删除和 使用动态规划:dp[i][j]表示s1前i个字符和s2前j个字符的最小ASCII删除和。 如果 s[i-1] == s[j-1],那么dp[i][j] = dp[i-1][j-1]。 否则 dp[i][j] = min(dp[i][j-1]+s2[j-1],dp[i-1][j]+s1[i-1])。 base case : dp[0][j] = sum(s2[0..j-1]), dp[i][0]= sum(s1[0..i-1])

583. 两个字符串的删除操作 最长公共子串长度lcs,则答案为 m+n-lcs*2.

Review

Tips

  1. mac键盘的Capslk键位是切换中英文输入法,在windows上Caps键比较积累,所以换成mac的设法。使用powertoys 将Caps键映射成 ctrl space就可以了。当然这里需要注意的是得有两个输入法。
  2. python 打包package如何包含非py文件:distutils - Including non-Python files with setup.py - Stack Overflow
  3. Cmake找不到openssl库解决办法:CMake not able to find OpenSSL library - Stack Overflow

Share

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值