Given an array of integers, calculate the ratios of its elements that are positive, negative, and zero.
Print the decimal value of each fraction on a new line with 6 places after the decimal.
給予一個整數陣列,計算正數、負數、零的元素比例。 在新的一行上打印出該分數的小數值。
Example 1:
arr = [1, 1, 0, -1, -1] There are n = 5 elements, two positive, two negative and one zero. Their ratios are 2/5 = 0.400000, 2/5 = 0.400000 and 1/5 = 0.200000. Results are printed as: 0.400000 0.400000 0.200000
solution:
宣告 positive, negative, zero 為 0。(number)
運用 for 迴圈來遍歷題目給予的 array,同時運用 if 判斷來進行分類與計次數。
將 positive, negative, zero 三者除與原先陣列的長度得到比例。
印出這三個數值,並取到小數點第六位。
Code 1: BigO(n)
'use strict'; //標準輸入流(stdin),並設定編碼為UTF-8。 process.stdin.resume(); process.stdin.setEncoding('utf-8'); let inputString = ''; let currentLine = 0; //累計使用者輸入的字數。 process.stdin.on('data', function(inputStdin) { inputString += inputStdin; }); //根據換行符 \n 進行分割,以將每行輸入分開,並將結果存入一個陣列中。 process.stdin.on('end', function() { inputString = inputString.split('\n'); main(); }); //回傳先前的 inputString 陣列中逐行讀取輸入,且將 currentLine 變數增加1。 function readLine() { return inputString[currentLine++]; } /* * Complete the 'plusMinus' function below. * * The function accepts INTEGER_ARRAY arr as parameter. */ function plusMinus(arr) { // Write your code here let positive = 0, negative = 0, zero = 0 //for loop(arr.length) for (let i = 0; i < arr.length; i++) { if (arr[i] > 0) { positive++ } else if (arr[i] < 0) { negative++ } else { zero++ } } const positiveRate = positive / arr.length const negativeRate = negative / arr.length const zeroRate = zero / arr.length console.log(positiveRate.toFixed(6)) console.log(negativeRate.toFixed(6)) console.log(zeroRate.toFixed(6)) } //讀取使用者輸入的陣列長度和陣列元素,並呼叫 plusMinus 函式來計算並印出正數、負數和零的比例。 function main() { //將輸入的內容移除空白,並用 parseInt(x, 10) 取十進制。 const n = parseInt(readLine().trim(), 10); //使用 replace(/\s+$/g, '') 刪除字串末尾的空格,接著 split(' ') 將字串以空格分割成字串陣列。最後,使用 map 方法將每個字串轉換為整數,得到了一個整數陣列 arr。 const arr = readLine().replace(/\s+$/g, '').split(' ').map(arrTemp => parseInt(arrTemp, 10)); plusMinus(arr); }
FlowChart:
Example 1
arr = [1, 1, 0, -1, -1] arr.length = 5 positive = 0, negative = 0, zero = 0 positive = 1, negative = 0, zero = 0 positive = 2, negative = 0, zero = 0 positive = 2, negative = 0, zero = 1 positive = 2, negative = 1, zero = 1 positive = 2, negative = 2, zero = 1 positiveRate = positive / arr.length // 2 / 5 = 0.4 negativeRate = negative / arr.length // 2 / 5 = 0.4 zeroRate = zero / arr.length // 2 / 5 = 0.4