用Java編譯請你實現(xiàn)三個 API append,addAll?和?multAll?來實現(xiàn)奇妙序列。 請實現(xiàn)?F
用Java編譯請你實現(xiàn)三個 API append,addAll?和?multAll?來實現(xiàn)奇妙序列。
?
請實現(xiàn)?Fancy?類 :
?
Fancy()?初始化一個空序列對象。
void append(val) 將整數(shù)?val?添加在序列末尾。
void addAll(inc)?將所有序列中的現(xiàn)有數(shù)值都增加?inc?。
void multAll(m)?將序列中的所有現(xiàn)有數(shù)值都乘以整數(shù)?m?。
int getIndex(idx) 得到下標(biāo)為?idx?處的數(shù)值(下標(biāo)從 0 開始),并將結(jié)果對?109 + 7?取余。如果下標(biāo)大于等于序列的長度,請返回?-1?。
示例:
?
輸入:
["Fancy", "append", "addAll", "append", "multAll", "getIndex", "addAll", "append", "multAll", "getIndex", "getIndex", "getIndex"]
[[], [2], [3], [7], [2], [0], [3], [10], [2], [0], [1], [2]]
輸出:
[null, null, null, null, null, 10, null, null, null, 26, 34, 20]
?
解釋:
Fancy fancy = new Fancy();
fancy.append(2); ??// 奇妙序列:[2]
fancy.addAll(3); ??// 奇妙序列:[2+3] -> [5]
fancy.append(7); ??// 奇妙序列:[5, 7]
fancy.multAll(2); ?// 奇妙序列:[5*2, 7*2] -> [10, 14]
fancy.getIndex(0); // 返回 10
fancy.addAll(3); ??// 奇妙序列:[10+3, 14+3] -> [13, 17]
fancy.append(10); ?// 奇妙序列:[13, 17, 10]
fancy.multAll(2); ?// 奇妙序列:[13*2, 17*2, 10*2] -> [26, 34, 20]
fancy.getIndex(0); // 返回 26
fancy.getIndex(1); // 返回 34
fancy.getIndex(2); // 返回 20
?
public class Fancy {
private int[] array;
private int length;
public Fancy() {
this.array = new int[0];
this.length = 0;
}
public void append(int val) {
int[] temp = new int[this.length + 1];
for (int i = 0; i < this.length; i++) {
temp[i] = this.array[i];
}
temp[this.length] = val;
this.length += 1;
this.array = temp;
}
public void addAll(int inc) {
for (int i = 0; i < this.length; i++) {
this.array[i] += inc;
}
}
public void multAll(int m) {
for (int i = 0; i < this.length; i++) {
this.array[i] *= m;
}
}
public int getIndex(int idx) {
if (idx >= this.length) {
return -1;
}
return (this.array[idx] % 109 + 7) % 109;
}
}
?