私のアルゴリズムは、たとえば次の入力が与えられた場合、入力の現在の数値から最大の正しい数値を見つける必要があります。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
を使用して問題を解決するためのより速い方法に精通したいと思います。LINQ
IEnumerable