【发布时间】:2013-03-08 08:26:31
【问题描述】:
我的算法应该从输入array 中的当前 数字中找到最大 正确的数字,例如,给定以下int[] 输入:
5、9、6、1、3、2
我的算法会输出:
9、6、3、3、2、2
这是我当前的代码:
public static int[] FindGreatestRightNumber(int[] input)
{
var output = new int[input.Length];
for (var i = 0; i < input.Length; i++)
{
int maxRightNumber = (i == input.Length - 1 ? input[i] : 0);
for (var j = i+1; j < input.Length; j++)
{
var currentNumber = input[j];
if (maxRightNumber < currentNumber)
maxRightNumber = currentNumber;
}
output[i] = maxRightNumber;
}
return output;
}
有人告诉我它可以更快,如何?有什么想法吗?
更新:请不要在你的答案中使用LINQ,我想熟悉使用简单代码解决问题的更快方法,不要@ 987654325@、IEnumerable扩展方法等
【问题讨论】:
-
@Saen:算法是:
For each input number, output the greatest of the *following* numbers, or output the input number if there are no following numbers.,至少根据给出的例子。 -
是的,我想知道为什么输出序列中没有
5。鉴于修正后的算法,我不确定它会不会快得多。
标签: c# performance algorithm big-o