每日温度这道题最难想到的就是如何利用单调栈来记录状态,需要存储的实际上就是温度单调递减的数组下标,然后当碰到温度比栈顶高的值时,就可以将单调栈内的部分弹出,两个下标的差就是对应的天数了。func dailyTemperatures(temperatures []int) []int { n := len(temperatures) res := make([]int, n) ...
Articles published by SnowKagura
SnowKagura- Home
- SnowKagura
分割数组的最大值这道题粗看没有任何的思路,看了题解感觉解法真的是很妙,利用二分和自定义的上下界条件等,获得了最终的答案。首先是上下界的定义,我们可以知道子...
全排列这题目也是一开始完全没有思路,不知道咋才能把全部的都输出一遍,感觉套for循环也不知道怎么写,后来看到答案直接恍然大悟,这其实是一个经典的回溯题,dfs+状态回溯即可完成。值得注意的是,通过这道题还突然意识到golang的函数传递其实是值传递,实在是太久没有看相关的文章有点忘记了,这里如果res的参数类型改成非指针,就会复制一份切片的结构体过去,一般情况下这不会引发任何问题,但是一旦进...
看到这道题的第一印像是用dp,$dp[i][j]$ 代表 $s[i..j]$ 的回文子串最大长度,后来发现这个定义好像做不出来。遂看答案,结果发现定义应该...
接雨水题目就是给一个高度的一维数组,说实话这个题目如果不看答案感觉很难想到解法,我倒是想到了要记录每格的状态,其他的完全想不到怎么接着写了。后续看了答案才恍然大悟,最关键的要素就是知道每格的左右最大高度,其中最小的和这一格的当前高度的差就是这一格能存的水量,即如下公式:$min(leftMax, rightMax) - height[i]$那么leftMax和rightMax怎么获得,最简单...