有一个有序一维数组 a[]={1,1,1,2,3,3,3,4,5,6,6}
如何才能输出"重复元素:重复开始-结束"这种格式?
例如上面的应该输出为:
1:0-2
3:4-6
6:9-10
我有一个代码, 但是效率很不理想
如何才能输出"重复元素:重复开始-结束"这种格式?
例如上面的应该输出为:
1:0-2
3:4-6
6:9-10
我有一个代码, 但是效率很不理想
解决方案 »
- 如何得到BoundFiled里的字段
- C# winform程序打包,想在安装后copy一个文件到C:\,碰到怪问题?
- C#调用C++DLL问题。急。。。在线等待。。。
- GDI+如何显示GIF动态图片的第二帧
- 救命啊!!!
- 用过xtragrid的兄弟们帮忙看看这个!
- 网格数据更新问题?((TextBox)e.Item.Cells[2].Controls[1]).Text;什么意思?
- 数组
- 读取文件的时候显示读取进度,你们是怎么确定最大值的?
- 两个字节数组 byte[]a,byte[b]。如何使b为a 的一段?如a[0]=1;a[1]=2;a[2]=3;a[3]=4..b[0]=a[2]=3,b[1]=a[3]=4...即b 是a 从第3个数组元
- 有web关对话框的问题,似乎很难搞,高手帮帮忙吧,困扰我两个星期了。
- (高手帮助!)c# 让picturebox真正透明
using System;
using System.IO;
using System.Collections.Generic;class Program
{
static void Main()
{
int[] arr = new int[]{1,1,1,2,3,3,3,4,5,6,6}; List<MyTag> lst = new List<MyTag>(); MyTag tag = new MyTag() { data = arr[0], len = 1, pos = 0 };
for (int i = 1; i < arr.Length; i++)
{
if (tag.data == arr[i])
{
tag.len++;
}
else
{
if (tag.len > 1)
{
lst.Add(tag);
} tag.data = arr[i];
tag.len = 1;
tag.pos = i;
}
} if (tag.len > 1)
{
lst.Add(tag);
} foreach (var v in lst)
{
Console.WriteLine("{0}:{1}-{2}", v.data, v.pos, v.pos + v.len - 1);
}
}
}struct MyTag
{
public int data;
public int pos;
public int len;
}
更新一下 for (int i = 1; i < arr.Length; i++)
{
if (tag.data == arr[i])
{
tag.len++;
}
else
{
//if (tag.len > 1)
//{
lst.Add(tag);
//} tag.data = arr[i];
tag.len = 1;
tag.pos = i;
}
}
来个完整的吧using System;
using System.IO;
using System.Collections.Generic;class Program
{
static void Main()
{
int[] arr = new int[]{1,1,1,2,3,3,3,4,5,6,6}; List<MyTag> lst = new List<MyTag>(); MyTag tag = new MyTag() { data = arr[0], len = 1, pos = 0 };
for (int i = 1; i < arr.Length; i++)
{
if (tag.data == arr[i])
{
tag.len++;
}
else
{
//if (tag.len > 1)
//{
lst.Add(tag);
//} tag.data = arr[i];
tag.len = 1;
tag.pos = i;
}
} //if (tag.len > 1)
//{
lst.Add(tag);
//} foreach (var v in lst)
{
Console.WriteLine("{0}:{1}-{2}", v.data, v.pos, v.pos + v.len - 1);
}
}}struct MyTag
{
public int data;
public int pos;
public int len;
}