过去的编码面试-降序

时间:2019-03-02 06:18:44

标签: algorithm

我正在做过去的面试,并且有一个问题指出以下几点:请学生按不减少的顺序站立。找出不在正确位置的学生人数。

看起来很简单,但是预期的输出却完全不同,下面是一些示例输出:

[5,1,1,3,4,1] -> 3
[4,1,2,3,4] -> 0
[4,4,3,2,1] -> 4

我看不到什么?

2 个答案:

答案 0 :(得分:1)

这里的想法是,您正在寻找具有降序顺序的子列表的总长度,以识别不在正确位置的学生(因为非降序的相反字面意思就是降序) )。降序也计算重复项,因此,如果在相同数字的两个前出现较大的数字,则该子列表也可以视为降序。

以您提供的第一个列表为例。

[5, 1, 1, 3, 4, 1]

从上方开始,第一个子列表序列为5, 1, 1。由于5大于1,并且您在一个较大的数字后面有一系列的1,因此列表按降序排列,并且有两个学生不按顺序排列。对于平凡的情况,4和1也是一样。

最后一个列表有些棘手。

[4, 4, 3, 2, 1]

在这里,我们有一个学生排名4,其次是另一个学生排名4。正如我们已经确定的,如果我们在一个较小的数字前两个有一个较大的数字,则列表可以按降序排列;但是,如果列表以相同的数字开头并且 then 减少,则该子列表也是也是降序排列的情况。

由于前四个位置都不错,因此我们不算前四个。如果这是2的列表,那么下面的4也会在一个好的位置上。但是,由于我们在第二个4之后添加了越来越少的数字,因此我们确定第一个之后的每个元素都按降序排列,因此我们得到了一个子列表长度为4。

答案 1 :(得分:1)

这个问题措辞很差,所有这些答案都将基于观点。.也就是说,我以任何合理的方式进行这项工作的唯一想法是,第一个数字是否表示数组的大小。

[5,1,1,3,4,1] -> 3

5名学生,依次[1,1,3,4,1]

unsorted     [1,1,3,4,1]
sorted       [1,1,1,3,4]
non-matching [    x,x,x]
-> 3

与其他人相同

4名学生,依次[1,2,3,4]

unsorted     [1,2,3,4]
sorted       [1,2,3,4]
non-matching [       ]
-> 0

4名学生,依次[4,3,2,1]

unsorted     [4,3,2,1]
sorted       [1,2,3,4]
non-matching [x,x,x,x]
-> 4