class Solution {
private int [] forSolution(int[] nums){
int[] result = new int[nums.length];
result[0] = nums[0];
for (int i = 1; i < nums.length; i++) {
result[i] = result[i - 1] + nums[i];
}
return result;
}
private int [] queueSolution(int[] nums){
int[] result = new int[nums.length];
ArrayQueue queue = ArrayQueue.createQueue(nums.length);
try {
queue.enQueue(nums[0]);
for(int i=1; i < nums.length; i++) {
int enQueueNum = queue.peek()+ nums[i];
queue.enQueue(enQueueNum);
}
int index = 0;
while(!queue.isEmpty()){
result[index] = queue.deQueue();
index++;
}
} catch(Exception e) {
// do nothing
}
return result;
}
public int[] runningSum(int[] nums){
// return forSolution(nums);
return queueSolution(nums);
}
}
class ArrayQueue {
private int front;
private int rear;
private int capacity;
private int [] array;
private ArrayQueue(int size){
capacity = size;
front = -1;
rear = -1;
array = new int [size];
}
public static ArrayQueue createQueue(int size) {
return new ArrayQueue(size);
}
public boolean isEmpty(){
return (front == -1);
}
public boolean isFull() {
return ((rear + 1) % capacity == front);
}
public int getQueueSize(){
return ((capacity - front + rear + 1) % capacity);
}
public void enQueue(int data) throws Exception {
if(isFull()) throw new Exception("Queue overflow");
rear = (rear + 1) % capacity;
array[rear] = data;
if(front == -1) front = rear;
}
public int deQueue() throws Exception {
int data;
if(isEmpty()) throw new Exception("Queue Empty");
data = array[front];
if(front == rear){
front = rear - 1;
}else {
front = (front + 1) % capacity;
}
return data;
}
public int peek() throws Exception {
int data;
if(isEmpty()) throw new Exception("Queue Empty");
data = array[rear];
return data;
}
}
算法1 一维数组的动态和
最新推荐文章于 2022-10-21 21:08:31 发布