字符串相加这个用一个carry代表进位,其他的模拟竖式加法即可func addStrings(num1 string, num2 string) string { p1 := len(num1)-1 p2 := len(num2)-1 carry := byte(0) result := make([]byte, 0) for p1 >= 0 |...
SnowKagura‘s blog
直面生活,热爱生活打家劫舍定义 dp[i] 为前 i 个房子抢到的最大金额,那么有 $dp[i] = max(dp[i-1], dp[i-2] + nums[i])$fun...
// 堆排 func heapSort(nums []int) { n := len(nums) if n < 2 { return } lastParent := (n - 2) / 2 for i := lastParent; i >= 0; i-- { pushDown(nums, i, n) ...
这个题目总共能买卖两次,且必须要先卖掉第一次才能买第二次的,所以可以从左往右扫描获得 [0, i] 的最大盈利,从右往左扫描 [i, n-1] 的最大盈利...
这道题,我们需要先通过把单词录入哈希表。然后构造一个可达性DP,dp[i] 代表了 s[0..i] 是否能拆分成 wordsDict 中的单词,再通过可达性 DP 构造一个 prevs 数组记录从某个位置 j 能够构造出的多个单词起点 i 的关系图。最后通过回溯 DFS,从尾部开始向前搜索 prevs 数组,一直遍历到头,得到的 path 一定是一个涵盖 wordsDict 单词的句子,并且...