LeetCode-等差數列劃分
阿新 • • 發佈:2018-12-05
題目413
如果一個數列至少有三個元素,並且任意兩個相鄰元素之差相同,則稱該數列為等差數列。陣列 A 包含 N 個數,且索引從0開始。陣列 A 的一個子陣列劃分為陣列 (P, Q),P 與 Q 是整數且滿足 0<=P<Q<N 。如果滿足以下條件,則稱子陣列(P, Q)為等差陣列:
- 元素 A[P], A[p + 1], …, A[Q - 1], A[Q] 是等差的。並且 P + 1 < Q 。
函式要返回陣列 A 中所有為等差陣列的子陣列個數。
示例:
A = [1, 2, 3, 4] 返回: 3, A 中有三個子等差陣列: [1, 2, 3], [2, 3, 4] 以及自身 [1, 2, 3, 4]。
解決
用兩個for迴圈,第一個for迴圈來找出以A[i]開頭的等差數列的個數,第二個for迴圈來判斷是不是等差數列。
public int numberOfArithmeticSlices(int[] A) { if(A.length<3) { return 0; } //子數列個數 int count = 0; int n =0; int temp = 0; for(int i=0;i<A.length-1;i++) { temp = A[i+1] - A[i]; for(int j=i+1;j<A.length;j++) { int k = j - 1; if(temp == A[j] - A[k]) { n++; }else { break; } //n>=2即表示數列至少有三個元素 if(n>=2) { count++; } } n=0; } return count; }