题目大意
http://www.lintcode.com/zh-cn/problem/fast-power
快速幂运算
题目分析
快速幂,将n转化成二进制逐位累乘
https://leetcode.com/problems/non-decreasing-array/
数组中至多修改一个元素的值,问能不能变成非递减数组
思路参考了 https://discuss.leetcode.com/topic/101144/java-c-simple-greedy-like-solution-with-explanation
有点贪心的思路,每次遇到i,可以判断i是否比i+1处的值大,如果大说明违反了“非递减”,cnt加1,同时需要修改值,使得nums[i]
和nums[i+1]
变成相同值,至于变成谁的值,还需进一步比较num[i-1]
和nums[i+1]
,具体边界控制可以看下代码。
https://leetcode.com/contest/leetcode-weekly-contest-46/problems/maximum-width-of-binary-tree/
求树的同层横向最大距离。
思路参考了 https://discuss.leetcode.com/topic/100149/c-java-clean-code-with-explanation
利用DFS计算,要为每个节点引入id(类似于二叉树用数组存储的思路,id的节点左右子节点存放在2 * id
和2 * id + 1
位置),方便后续计算距离。
|
|
时间复杂度:O(n)
,空间复杂度:o(h)
https://leetcode.com/problems/decode-ways-ii/#/description
Decode Ways 的加强版,增加了*
,*
能匹配1-9(注意不能匹配0),题目输入保证只含有*
,`0-9
。并对输出取模。
跟Decode Ways一样,很容易看出来是DP,可以把*
的情况分解成9种,然后用二维数组的第二维度代表1-9
这9种情况,实际转移方程就是分情况讨论稍微麻烦了一点,具体可以看下代码。