我的算法应该发现从当前数最大权数在输入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;
}
有人告诉我,这可能是快很多,怎么样?任何想法?
UPDATE:请不要在你的答案使用LINQ
,我想熟悉更快的方法来解决使用简单的代码,没有LINQ
,IEnumerable
扩展等方法
@Saen:该algorthm是:'对于每个输入数,输出的最大的* *下列数字,或输出的输入数目,如果没有以下numbers.',至少根据给定的例子。 – 2013-03-08 08:32:18
是的,我想知道为什么输出序列中没有'5'。鉴于修正后的算法,我不确定它可能会更快。 – 2013-03-08 08:34:13