【LeetCode笔记】剑指 Offer 14. 剪绳子 I II(Java、动态规划、偏数学)
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode笔记】剑指 Offer 14. 剪绳子 I II(Java、动态规划、偏数学)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 剪繩子 I
- 題目描述
- 思路 && 代碼
- 1. 動態(tài)規(guī)劃 O(n2n^2n2)、O(n)
- 2. 最優(yōu)解:數(shù)學方法 O(n)、O(1)
- 二刷
- 剪繩子 II
- 題目描述
- 思路 && 代碼
- 二刷
剪繩子 I
題目描述
- 還是比較偏數(shù)學的一道題,通過獲取結論來獲得最優(yōu)解
思路 && 代碼
1. 動態(tài)規(guī)劃 O(n2n^2n2)、O(n)
- dp[i]:長度為 i 的繩子,可達到的最大值
- 狀態(tài)轉移方程:以之前的值,循環(huán)組合,找出可取的最大值
2. 最優(yōu)解:數(shù)學方法 O(n)、O(1)
- 見注釋的正確性證明
- 主要做法就是循環(huán)地切出3,直到所剩值不大于4為止( n == 4 時候,直接用是最好的,因為 x * 4 == x* 2 * 2 > x * 3 * 1)
二刷
- 結論題,記住循環(huán)切3就行
- 注意邊界,n < 4 時直接取 n - 1
剪繩子 II
題目描述
- 相較于1,多了一個取模操作
思路 && 代碼
class Solution {public int cuttingRope(int n) {if(n < 4) {return n - 1;}long res = 1L;while(n > 4) {res *= 3;res %= 1000000007;n -= 3;}return (int)(res * n % 1000000007);} }二刷
- 注意涉及取模,直接用Long,防止溢出
總結
以上是生活随笔為你收集整理的【LeetCode笔记】剑指 Offer 14. 剪绳子 I II(Java、动态规划、偏数学)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 自定义桌面图标大小设置,
- 下一篇: 调节e18-d80nk的测量距离_地坪研