📜  ruschnitt schtrgöes gesuvcht (1)

📅  最后修改于: 2023-12-03 15:34:46.401000             🧑  作者: Mango

Ruschnitt Schtrgöes Gesuvcht

这是一道有趣的编程题目,挑战程序员的智慧和技能。题目的名称是乱码,但实际上代表了一个任务:从一组无序的数据中找到最大值和最小值。

问题描述

你需要写一个函数,名为 ruschnittSchtrgöesGesuvcht,它接收一个含有整数的数组作为参数,并返回一个包含最大值和最小值的对象。其中,最大值用字符串 max 表示,最小值用字符串 min 表示。如果数组为空,则返回 null

函数的实现方式不限,但它必须满足以下要求:

  • 时间复杂度:O(n),即线性复杂度;
  • 空间复杂度:O(1),即常数空间复杂度;
  • 稳定性:对于重复元素,输出结果应该与输入元素的顺序无关。
例子

以下是该函数的几个例子。

输入:[10, 5, -10, 100, 20],输出:{max: 100, min: -10}

输入:[5, 5, 5, 5, 5],输出:{max: 5, min: 5}

输入:[],输出:null

解题思路

解题的思路可以使用数组的遍历和比较,从而找到最大值和最小值。我们可以设置两个变量 minmax,初始值分别为数组中的两个元素,然后遍历整个数组,依次比较每个元素和 minmax 的值,最后得出最小值和最大值。

代码实现

以下是该函数的实现代码:

function ruschnittSchtrgöesGesuvcht(arr) {
  if (!arr.length) {
    return null;
  }
  let min = arr[0], max = arr[0];
  for (let i = 1; i < arr.length; i++) {
    const val = arr[i];
    min = Math.min(min, val);
    max = Math.max(max, val);
  }
  return { min, max };
}

我选择用 JavaScript 实现了该函数,你可以根据实际情况,选择自己熟悉的编程语言来实现它。