【问题标题】:algorithm alternating motion recursion算法交替运动递归
【发布时间】:2020-12-03 20:33:01
【问题描述】:

我如何设计一种算法来输入一组数字(任意长度)并确定它们形成的函数是否代表交替运动?

例如,对于数组 [-3, -2, -4, 4, 2, 5, 0, 3, -10, 4],输出将是 yes,因为数字从上到下-向上向下向上向下向上。对于数组 [3, -2, -4, 4, 5, 7, 10, 3, -10, 4] 输出将是 no 因为数字有时只会下降 (3, -2, -4) 或仅下降向上 (-4, 4, 5, 7, 10)。

我只想要算法。我不打算编写代码。

【问题讨论】:

    标签: javascript algorithm recursion server recursive-datastructures


    【解决方案1】:

    只需取两个连续值之间的差值:该差值的符号应在数组循环的每次迭代中翻转:

    function isUpDown(arr) {
      if (arr.length < 3 || arr[0] === arr[1]) return false;
      for (let i = 2, sign = Math.sign(arr[0] - arr[1]); i < arr.length; i++, sign = -sign) {
        if (sign !== Math.sign(arr[i] - arr[i-1])) return false;
      }
      return true;
    }
    
    console.log(isUpDown([-3, -2, -4, 4, 2, 5, 0, 3, -10, 4])); // true
    console.log(isUpDown([3, -2, -4, 4, 5, 7, 10, 3, -10, 4])); // false

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 2020-05-30
      • 2012-12-12
      • 2019-12-18
      • 1970-01-01
      相关资源
      最近更新 更多