需求
[ 1, 2, 3, 4 .... n ] 连续数字中,没有断连的最大长度
int[] arr = { 1, 2, 3, 5, 6, 7, 9, 10, 11, 15, 16, 17, 18, 19, 21, 22, 23, 24 };
public static int ContinueNumLenth(int[] array)
{
int value = array[0], tempvalue=0, maxvalue = 0;
int count = 1, pos = 0;
int len = 0;
for (int i = 0; i < array.Length; i++)
{
len = len < array.Length ? pos + 1 : pos;
if (++pos < array.Length && array[len] == value + 1)
{
value = array[pos];
count++;
tempvalue = count;
}
else
{
if (maxvalue < tempvalue)
{
maxvalue = tempvalue;
}
if (pos < array.Length)
{
value = array[pos];
count = 1;
}
}
}
return maxvalue;
}
获取数组中 1 连续出现的最大次数
int[] arr = { 0, 0, 1, 1, 1, 0 ,0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1 };
public int GetOneContinueNum(int[] array)
{
int value = array[0], maxvalue = 0, maxcount = 0;
int count = 1, pos = 0;
while (true)
{
while (++pos < array.Length && array[pos] == 1) count++;
if (count > maxcount) { maxcount = count; maxvalue = value; }
if (pos < array.Length)
{
value = array[pos];
count = 1;
}
else break;
}
return maxcount - 1;
}
最多连续出现数字的次数
int[] arr = { 0, 0, 1, 1, 1, 0 ,0, 0, 2, 2, 2, 6, 6, 6, 6, 0, 0, 1 };
public static void check(int[] array)
{
int value = array[0], maxvalue = 0, maxcount = 0;
int count = 1, pos = 0;
while (true)
{
while (++pos < array.Length && array[pos] == value) count++;
if (count > maxcount) { maxcount = count; maxvalue = value; }
if (pos < array.Length)
{
value = array[pos];
count = 1;
}
else break;
}
Console.WriteLine("最多连续出现数字为{0},次数{1}", maxvalue, maxcount);
}
网友评论