【发布时间】:2020-06-26 19:11:18
【问题描述】:
我想输出将 n 个不同整数的未排序数组切片为一个或多个切片所需的切片数,并对它们进行排序,以便在排序后的切片返回时(以相同的顺序),它给出原始数组按排序顺序。
例如,
给定数组 = [2,1,6,4,3,7]
如果你像这样对给定的数组进行切片:[2,1] [6,4,3] [7] 然后像这样单独排序:[1,2] [3,4,6] [7] 并且最后,像这样加入它们:[1,2,3,4,6,7] 你得到了按排序顺序排列的原始数组。因此,切片数为 3
我尝试在 Stack Overflow/Google 中搜索它并找到以下解决方案,但它似乎不适用于上述输入(返回 2 而不是 3)。
public int solution(int[] A)
{
if (A.Length < 3) return A.Length;
int count = 0;
for (int i = 1; i < A.Length; i++)
{
if (A[i] > A[i - 1]) count += 1;
}
return count;
}
谁能建议我们如何解决这个问题并在 C# 中适当地解决这个问题
【问题讨论】:
-
对切片进行排序然后以相同的顺序将它们连接回来是什么意思?为什么那个例子应该给出 3 的结果?
-
如果你像这样对给定的数组进行切片:[2,1] [6,4,3] [7] 然后像这样单独排序:[1,2] [3,4,6 ] [7] 最后,像这样加入它们: [1,2,3,4,6,7] 你得到原始数组的排序顺序。因此,切片数为 3。
-
请edit您的问题与该描述。您希望函数返回切片数的事实在原始问题中并不存在。
-
您忽略了 1 个切片的 null 大小写,因此请以
count = 1而不是count = 0开头。 -
@Mocas 如果您在回复我,我也想知道同样的问题,但是您是否认为有一些约束不允许初始数组类似于 [3,1,6,4,2 ,7]?