排序值和索引数组【难度:1级】:
答案1:
using System;
using System.Linq;
public class Kata
{
public static int[] SortByValueAndIndex(int[] array)
{
int i = 1;
return array.OrderBy(n => n * i++).ToArray();
}
}
答案2:
using System;
using System.Collections.Generic;
using System.Linq;
public class Kata
{
public static int[] SortByValueAndIndex(int[] array)
{
var i = 1;
return array.OrderBy(x => x * i++).ToArray();
}
}
答案3:
using System;
public class Kata
{
public static int[] SortByValueAndIndex(int[] array)
{
int[] keys = new int[array.Length];
for (int i = 0; i < array.Length; i++) keys[i] = array[i] * (i + 1);
Array.Sort(keys, array);
return array;
}
}
答案4:
using System;
using System.Linq;
public class Kata
{
public static int[] SortByValueAndIndex(int[] array)
{
return array.Select((a,i) => new int[] { a, a * (i+1)}).OrderBy(a => a[1]).Select(a => a[0]).ToArray();
}
}
答案5:
using System.Collections.Generic;
using System.Linq;
public class Kata
{
public static int[] SortByValueAndIndex(int[] array)
{
var result = new List<Weights>();
for (var i = 0; i < array.Length; i++)
{
var weight = new Weights() {original = array[i], weightOfSum = array[i] * (i + 1)};
result.Add(weight);
}
return result.OrderBy(x => x.weightOfSum).Select(x => x.original).ToArray();
}
public class Weights
{
public int original { get; set; }
public int weightOfSum { get; set; }
}
}
答案6:
using System;
using System.Collections.Generic;
using System.Linq;
public class Kata
{
public static int[] SortByValueAndIndex(int[] array)
{
int i = 1;
return array.OrderBy(x => x * (i++)).ToArray();
}
}
答案7:
using System;
using System.Linq;
public class Kata
{
public static int[] SortByValueAndIndex(int[] array)
{
int i=1;
return array.OrderBy(p => p*i++).ToArray();
}
}
答案8:
using System.Collections.Generic;
using System.Linq;
internal struct MyClass
{
public int Key;
public int Value;
public MyClass(int key, int value)
{
Key = key;
Value = value;
}
}
public class Kata
{
public static int[] SortByValueAndIndex(int[] array)
{
var list = new List<MyClass>();
var count = 0;
foreach (var val in array)
{
count++;
list.Add(new MyClass(val, count * val));
}
return list.OrderBy(pair => pair.Value).Select(pair => pair.Key).ToArray();
}
}
答案9:
using System;
using System.Collections.Generic;
using System.Linq;
public class Kata
{
public static int[] SortByValueAndIndex(int[] array)
{
var list = new List<Tuple<int, int>>();
var count = 0;
foreach (var val in array)
{
count++;
list.Add(Tuple.Create(val, count * val));
}
return list.OrderBy(pair => pair.Item2).Select(pair => pair.Item1).ToArray();
}
}
答案10:
using System.Linq;
public class Kata {
public static int[] SortByValueAndIndex( int[] array ) {
return
array.Select( ( n, i ) => new {N = n, O = n*( i + 1 )} ).OrderBy( _ => _.O ).Select( _ => _.N ).ToArray( );
}
}
转载:https://blog.csdn.net/weixin_45444821/article/details/101975258
查看评论