如何在不使用函数和数组的情况下打印第二大数字

How to print the 2nd biggest number without using function and arrays

let biggestNo;

for (let i = 1; i <= 10000; i++) {
  const a = prompt("enter a number");
  if (!a) {
    break;
  } else {
    biggestNo = Math.max(a);
  }
}
console.log(biggestNo);

如何在不使用函数和数组的情况下使用这种方法打印第二大数字

这是一个时间复杂度为 O(n) 的解决方案:

const array = [31, 25, 43, 19, 8, 42];

let main = -Infinity, sub = -Infinity;

for (let num of array) {
  if(num > main) {
    sub = main;
    main = num;
  } else if(num > sub) {
    sub = num;
  }
}

console.log('biggest: ' + main);
console.log('second biggest: ' + sub);


使用用户输入:

let main = -Infinity, sub = -Infinity;

const total = 5;
for(let i = 1; i <= total; i++) {
  const num = +prompt(`Enter a number(${i} of ${total}):`)
  if(num > main) {
    sub = main;
    main = num;
  } else if(num > sub) {
    sub = num;
  }
}

console.log('biggest: ' + main);
console.log('second biggest: ' + sub);

您可以使用正则表达式来匹配所有收集到的数字吗?

let numbersString;

for (let i = 1; i <= 1000; i++) {
  const a = prompt("enter a number");
  if (!a) {
    break;
  } else {
    numbersString += "-" + a
  }
}

const numbers = numbersString.match(/\d+/g)
const secondLargest = numbers[numbers.length - 2]

console.log(secondLargest);