一個不是空陣列的 A ,含有連續 N 個整數,
這些 A 陣列連續 N 個整數代表連續的車輛,
陣列 A 只有包含 0 或是 1:
- 0代表一輛向東行駛的汽車
- 1代表一輛向西行駛的汽車
目標是要數路過的車輛,我們假設有一組 (P, Q),範圍是 0 < P < Q < N,
P 是往東行駛,Q 是往西行駛。
舉例來說,A 陣列如下:
A[0] = 0
A[1] = 1
A[2] = 0
A[3] = 1
A[4] = 1
我們有五種路過車輛的組合 (0, 1), (0, 3), (0, 4), (2, 3), (2, 4)。
寫一個 function
int solution(int A[], int N);
給一個不是空的陣列 A 並且有 N 個整數,返回值為幾組路過車輛的數字。
如果數字大於 1,000,000,000 則返回 -1
舉例來說,A 陣列如下:
A[0] = 0
A[1] = 1
A[2] = 0
A[3] = 1
A[4] = 1
則 function 返回 5 。
條件:
- N的範圍必須是 0~100,000
- 陣列 A 的每個元素不是 0 就是 1
複雜度:
- 最糟的時間複雜度為 O(N)
- 最糟的空間複雜度為 O(1) (不含 input 的參數)
Java 程式碼
// you can also use imports, for example: // you can also use imports, for example: import java.util.*; // you can write to stdout for debugging purposes, e.g. // System.out.println("this is a debug message"); class Solution { public int solution(int[] A) { // write your code in Java SE 8 // write your code in Java SE 8 int zCount = 0; int total = 0; for(int i =0;i<A.length;i++){ if(A[i] == 0){ zCount++; }else{ total +=zCount; } } if(Math.abs(total) > 1000000000){ return -1; } return total; } }分數共拿 100%,
任何問題歡迎交流討論,一起學習!
沒有留言:
張貼留言