我要给一个数组分类,数组中数字之间的差距每小于1000时分为一组,要求用Csharp
时间: 2024-05-12 13:19:38 浏览: 39
对两个数组中相同的数据和不相同的数据进行分类
4星 · 用户满意度95%
来实现。
可以通过以下代码实现:
```csharp
public static List<List<int>> GroupArray(int[] arr)
{
List<List<int>> groups = new List<List<int>>();
List<int> currentGroup = new List<int>();
int prevNum = arr[0];
currentGroup.Add(prevNum);
for (int i = 1; i < arr.Length; i++)
{
int currentNum = arr[i];
if (currentNum - prevNum < 1000)
{
currentGroup.Add(currentNum);
}
else
{
groups.Add(currentGroup);
currentGroup = new List<int>();
currentGroup.Add(currentNum);
}
prevNum = currentNum;
}
groups.Add(currentGroup);
return groups;
}
```
其中,`arr` 是输入的整数数组,返回值是一个 `List<List<int>>` 类型的列表,表示分组后的数组。
我们先初始化一个空的列表 `groups` 和一个空的列表 `currentGroup`,`currentGroup` 用于保存当前正在处理的分组。然后遍历数组,对于每个数字,如果它和前一个数字之间的差距小于 1000,则将它加入 `currentGroup` 中,否则将 `currentGroup` 添加到 `groups` 中,并重新创建一个空的列表作为新的 `currentGroup`。遍历完数组后,将最后一个 `currentGroup` 添加到 `groups` 中并返回结果。
使用方法:
```csharp
int[] arr = new int[] { 100, 2000, 2500, 3500, 4500, 5500, 6000 };
List<List<int>> groups = GroupArray(arr);
foreach (List<int> group in groups)
{
Console.WriteLine(string.Join(", ", group));
}
```
输出结果:
```
100, 2000, 2500
3500, 4500, 5500
6000
```
阅读全文