Leetcode——413. 等差數列劃分
阿新 • • 發佈:2018-09-23
num href 關系 求和 https none [] 思路 display
題目描繪:題目鏈接
題目中需要求解一個數組中等差數組的個數,這個問題可以利用動態規劃的思路來分析。
三步驟:
1:問題歸納。題目需要求解等差數列的和,我們可以用一個數組保存前i個元素可以構成的等差數列的個數。dp[ i ],最後需要的時候再求和。
2:遞歸關系式的書寫:等差數列無非要滿足這個關系:a[ i ] - a[i-1] = a[i-1] - a[i-2];如果再添加一個元素a[i+1]滿足:a[i+1] - a[i] = a[i] - a[i -1],則只需要在前者的基礎上加1就可以。
遞推關系:dp[i] = dp[i-1]+1
3:初始化:滿足dp[0] = 0;dp[1] = 0.
代碼如下:
class Solution { public int numberOfArithmeticSlices(int[] A) { if(A == null || A.length == 0){ return 0; } int len = A.length; int[] a = new int[len]; for(int i = 2; i < len; i++){ if(A[i] - A[i-1] == A[i-1]-A[i-2]){ a[i]= a[i-1] + 1; } }
//最後求和 int sum = 0; for(int t: a){ sum += t; } return sum; } }
Leetcode——413. 等差數列劃分