LeetCode 396. 旋转函数(数学)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 396. 旋转函数(数学)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給定一個長度為 n 的整數數組 A 。
假設 Bk 是數組 A 順時針旋轉 k 個位置后的數組,我們定義 A 的“旋轉函數” F 為:
F(k) = 0 * Bk[0] + 1 * Bk[1] + ... + (n-1) * Bk[n-1]。計算F(0), F(1), …, F(n-1)中的最大值。
注意:
可以認為 n 的值小于 105。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/rotate-function
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 高中數學解題
F(0) 可算出
所有 A[i] 的總和 為 S
F(i+1)?F(i)=S?n?A[n?i?i]F(i+1)-F(i) = S-n*A[n-i-i]F(i+1)?F(i)=S?n?A[n?i?i]
右邊的差值 diff 上一次的 diff 迭代到下一次,需要 +n?A[n?i?1]?n?A[n?i?2]+n*A[n-i-1]-n*A[n-i-2]+n?A[n?i?1]?n?A[n?i?2]
總結
以上是生活随笔為你收集整理的LeetCode 396. 旋转函数(数学)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LintCode 1862. 给树浇水的
- 下一篇: LintCode 125. 背包问题 I