Given five positive integers, find the minimum and maximum values that can be calculated by summing exactly four of the five integers. Then print the respective minimum and maximum values as a single line of two space-separated long integers.
給予五個正整數,在全部五個整數中尋找與計算其中的四個數值進行加總,得到最小和最大的數值。 然後中間用兩個空白來印出最小值和最大值。
Example 1:
arr = [1, 3, 5, 7, 9] The minimum sum is 1 + 3 + 5 + 7 = 16 and the maximum sum is 3 + 5 + 7 + 9 = 24. The function prints 16 24
solution:
先將 arr 中的陣列由大到小排序( sort((a, b) => a – b) )
在 for 迴圈遍歷 arr 陣列中每個 element 時,
minimum 取前四個(i < arr.length - 1),
maximum 取後四個(i > 0),
將結果印出。
Code 1: BigO(n log n)
'use strict'; process.stdin.resume(); process.stdin.setEncoding('utf-8'); let inputString = ''; let currentLine = 0; process.stdin.on('data', function(inputStdin) { inputString += inputStdin; }); process.stdin.on('end', function() { inputString = inputString.split('\n'); main(); }); function readLine() { return inputString[currentLine++]; } /* * Complete the 'miniMaxSum' function below. * * The function accepts INTEGER_ARRAY arr as parameter. */ function miniMaxSum(arr) { // Write your code here let minimum = 0, maximum = 0 arr.sort((a, b) => a - b) for (let i = 0; i < arr.length; i++) { if (i < arr.length - 1) { minimum += arr[i] } if (i > 0) { maximum += arr[i] } } console.log(minimum, maximum); } function main() { const arr = readLine().replace(/\s+$/g, '').split(' ').map(arrTemp => parseInt(arrTemp, 10)); miniMaxSum(arr); }
FlowChart:
Example 1
arr = [1, 3, 5, 7, 9] arr[i], minimum = 0, maximum = 0 1, minimum = 1, maximum = 0 3, minimum = 4, maximum = 3 5, minimum = 9, maximum = 8 7, minimum = 16, maximum = 15 9, minimum = 16, maximum = 24