gpt4 book ai didi

c# - 查找数组中最低唯一值的索引

转载 作者:行者123 更新时间:2023-11-30 20:23:30 25 4
gpt4 key购买 nike

我试图在数字范围为 1 到 9 的输入字符串中找到最低唯一值的索引。

我有两个问题:

  • 与我使用的 for 循环相比,是否有更好的循环方式?我没有包括数组的最后一个元素,因为它会抛出异常,因为我正在检查下一个元素的值。我知道如果我包含一个检查它是否是最后一个元素的 if 语句就可以完成,但它会检查每个不是最优的迭代,因此我在循环之外进行。

  • 是否有更好的方法可用于查找结果?

我愿意接受任何评论。

        string line = "3 3 9 1 6 5 1 5 3 6";

// 1 array to be sorted in order to find the lowest unique value more easily
// another array so I can get the index of the lowest unique value since
// the first array is going to be sorted
int[] input = Array.ConvertAll(line.Split(' '), int.Parse);
int[] input2 = Array.ConvertAll(line.Split(' '), int.Parse);
Array.Sort(input);

int? previous = null;
int lowest = 0;

for (int i = 0; i < input.Length - 1; i++)
{
if (input[i] != previous && input[i] < input[i + 1])
{
lowest = input[i];
break;
}
previous = input[i];
}

int last = input[input.Length - 1];
if (last != previous && lowest == 0)
{
lowest = last;
}

Console.WriteLine(Array.IndexOf(input2, lowest));

最佳答案

您可以使用 LINQ 并对元素进行分组以获得计数(唯一性)。然后找到最低值。

int lowest = input.GroupBy(x => x, (k,v) => new { Key = k, Values = v }) /*group elements*/
.Where(x => x.Values.Count() == 1) /*get unique ones*/
.Min(x => x.Key) /*get the lowest*/
;

对于这个数组,它返回 2,正如预期的那样:

int[] input = new int[] {1, 1, 2, 3, 4};

关于c# - 查找数组中最低唯一值的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28810801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com