以两种不同的方式排序。但得到错误的输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以两种不同的方式排序。但得到错误的输出相关的知识,希望对你有一定的参考价值。

下面给出了检查列表是否排序的两种不同方法。

方法1

for i in range(len(inord) - 2):
    if (inord[i] >= inord[i + 1]):
        return False
return True

方法2

temp = sorted(inord)
return min([1 if i==j else 0 for i,j in zip(temp,inord)])

这两种方法是相同的,但第二种方法在某些情况下失败了,怎么会发生?

上面提到的问题是参考HackerRank提出的问题。请查看以下链接以获取完整代码:https://www.hackerrank.com/challenges/is-binary-search-tree/forum/comments/522743

答案

这里有两个问题:

  1. 第一行中的范围不会比较最后两行。它应该是-1而不是-2
  2. 如果两个相邻元素相同,则第一个代码块返回False。在另一种方法中,排序不会改变相同元素的顺序,因此它最终会返回True。您想检查单调递增或严格单调递增的值吗?

这有帮助吗?

以上是关于以两种不同的方式排序。但得到错误的输出的主要内容,如果未能解决你的问题,请参考以下文章

OOP 设计以两种方式避免对象另一个对象

Knockout.js - 如何使用“foreach”以两种不同的方式显示项目列表?

为啥以两种不同方式应用随机森林分类器的特征选择结果不同

组合列表中的元素:似乎python以两种不同的方式处理同一个项目,我不知道为啥[重复]

如何以两种不同的大小从图像选择器中保存图像

用于在多个活动/片段中重用的全局加载器 (LoaderManager)