Reputation: 49
i tray to build function to show the high and lowest number but between 0 and 20
"use strict";
let scors = [50, 70, 60, 20, 15, 14, 12, 10, 9, 8, -5, 4, 16, 2, 17.5, 12.75];
function minMax(score) {
let max = score[0];
let min = score[0];
for (let i = 0; i < score.length; i++) {
if (score[i] < min && score[i] >= 0) {
min = score[i];
}
//this part dose not work
if (score[i] > max && score[i] <= 20) {
max = score[i];
}
}
console.log(max);
console.log(min);
}
minMax(scors);
Upvotes: 1
Views: 138
Reputation: 855
For the range of 0 - 20 you can bound the min and the max which would eliminate the need to sort the array.
Time complexity O(N).
'use strict';
let scors = [50, 70, 60, 20, 15, 14, 12, 10, 9, 8, -5, 4, 16, 2, 17.5, 12.75];
function minMax(score) {
let max = -1;
let min = 21;
for (let i = 0; i < score.length; i++) {
if (score[i] < min && score[i] >= 0) {
min = score[i];
}
// This part now works!
if (score[i] > max && score[i] <= 20) {
max = score[i];
}
}
console.log(max);
console.log(min);
}
minMax(scors);
Upvotes: 1
Reputation: 2005
These are the conditions you applied, the current score must be greater than max
and less than 20
.
if (score[i] > max && score[i] <= 20) {
max = score[i];
}
This is an example of 4th first iteration.
input: 50
> max: 50
input: 70
> max: 50
input: 60
> max = 50
input: 20
> max = 50
In the 4th iteration, the
max
is not assigned as20
because it doesn't greater than the current max which is 50.
Here is the simple solution:
score.sort();
for sorting the array before start looping.min
with the last index of the array.'use strict';
let scors = [50, 70, 60, 20, 15, 14, 12, 10, 9, 8, -5, 4, 16, 2, 17.5, 12.75];
function minMax(score) {
score.sort();
let max = score[0];
let min = score[score.length - 1];
for (let i = 0; i < score.length; i++) {
if (score[i] < min && score[i] >= 0) {
min = score[i];
}
// This part now works!
if (score[i] > max && score[i] <= 20) {
max = score[i];
}
}
console.log(max);
console.log(min);
}
minMax(scors);
Upvotes: 1