C++程式中移除K位數字
假設我們有一串數字,如果它至少包含三個元素,並且任意兩個連續元素之間的差值相同,則稱之為等差數列。例如,以下是等差數列:[1, 3, 5, 7, 9],[7, 7, 7, 7],[3, -1, -5, -9],但以下數列不是等差數列:[1, 1, 2, 5, 7]
現在給定一個包含N個數字的零索引陣列A。給定陣列的切片是任何整數對(P, Q),滿足0 <= P < Q < N。如果序列A[P],A[p + 1],...,A[Q - 1],A[Q]是等差數列,則稱陣列A的切片(P, Q)為等差數列。函式應該找到陣列A中等差數列切片的數量。
所以如果輸入是[1,2,3,4],那麼輸出將是3,因為元素是[1,2,3],[2,3,4]和[1,2,3,4]
為了解決這個問題,我們將遵循以下步驟:
ret := 0, n := A的大小,建立一個大小為n的陣列dp
對於i從2到n – 1
如果a[i] – a[i – 1] = a[i – 1] – a[i – 2],則
dp[i] := 1 + dp[i - 1]
ret增加dp[i]
返回ret
示例 (C++)
讓我們來看下面的實現,以便更好地理解:
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int numberOfArithmeticSlices(vector<int>& A) {
int ret = 0;
int n = A.size();
vector <int> dp(n);
for(int i = 2; i < n; i++){
if(A[i] - A[i - 1] == A[i - 1] - A[i - 2]){
dp[i] = 1 + dp[i - 1];
ret += dp[i];
}
}
return ret;
}
};
main(){
Solution ob;
cout << (ob.removeKdigits("1432219", 3));
}輸入
"1432219" 3
輸出
1219
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP