数组连续数

问题描述

6个数字的数组怎么能找到中间是否有连续的数总共有几组假如stringa={"1","2","4","5","7","9"}得出的几个应该是1,24,5四个连续数1,24,5两组

解决方案

解决方案二:
最笨的办法string[]a={"1","2","4","5","7","9"};stringn="";List<string>ls=newList<string>();for(inti=0;i<a.Length;i++){if(i==0){n+=a[i]+",";}else{if(a[i]==(int.Parse(a[i-1])+1).ToString()){n+=a[i]+",";}else{if(n!="")ls.Add(n.TrimEnd(','));n="";}}}///intcou=ls.Count;//符合条件的个数

解决方案三:
上面的有点问题,下面是修改过的string[]a={"1","2","4","5","7","9"};stringn="";List<string>ls=newList<string>();for(inti=0;i<a.Length;i++){if(i==0){n+=a[i]+",";}else{if(a[i]==(int.Parse(a[i-1])+1).ToString()){n+=a[i]+",";}else{n=n.TrimEnd(',');if(n!=""&&n.IndexOf(",")>-1){ls.Add(n.TrimEnd(','));n=a[i]+",";}}}}///intcou=ls.Count;//符合条件的个数

解决方案四:
一次遍历,取相邻两个数进行判断就可以了。时间复杂度O(n)
解决方案五:
引用2楼wangjun8868的回复:

上面的有点问题,下面是修改过的string[]a={"1","2","4","5","7","9"};stringn="";List<string>ls=newList<string>();for(inti=0;i<a.Length;i++){if(i==0){n+=a[i]+",";}else{if(a[i]==(int.Parse(a[i-1])+1).ToString()){n+=a[i]+",";}else{n=n.TrimEnd(',');if(n!=""&&n.IndexOf(",")>-1){ls.Add(n.TrimEnd(','));n=a[i]+",";}}}}///intcou=ls.Count;//符合条件的个数

还一个总组数怎么出来
解决方案六:
引用4楼xiejie114的回复:

Quote: 引用2楼wangjun8868的回复:
上面的有点问题,下面是修改过的string[]a={"1","2","4","5","7","9"};stringn="";List<string>ls=newList<string>();for(inti=0;i<a.Length;i++){if(i==0){n+=a[i]+",";}else{if(a[i]==(int.Parse(a[i-1])+1).ToString()){n+=a[i]+",";}else{n=n.TrimEnd(',');if(n!=""&&n.IndexOf(",")>-1){ls.Add(n.TrimEnd(','));n=a[i]+",";}}}}///intcou=ls.Count;//符合条件的个数

还一个总组数怎么出来

总数组是什么意思?描述一下
解决方案七:
引用5楼wangjun8868的回复:

Quote: 引用4楼xiejie114的回复:
Quote: 引用2楼wangjun8868的回复:
上面的有点问题,下面是修改过的string[]a={"1","2","4","5","7","9"};stringn="";List<string>ls=newList<string>();for(inti=0;i<a.Length;i++){if(i==0){n+=a[i]+",";}else{if(a[i]==(int.Parse(a[i-1])+1).ToString()){n+=a[i]+",";}else{n=n.TrimEnd(',');if(n!=""&&n.IndexOf(",")>-1){ls.Add(n.TrimEnd(','));n=a[i]+",";}}}}///intcou=ls.Count;//符合条件的个数

还一个总组数怎么出来

总数组是什么意思?描述一下

里面1跟2是一个连续的组4跟5是一个连续的组总数是2组
解决方案八:
引用6楼xiejie114的回复:

Quote: 引用5楼wangjun8868的回复:
Quote: 引用4楼xiejie114的回复:
Quote: 引用2楼wangjun8868的回复:
上面的有点问题,下面是修改过的string[]a={"1","2","4","5","7","9"};stringn="";List<string>ls=newList<string>();for(inti=0;i<a.Length;i++){if(i==0){n+=a[i]+",";}else{if(a[i]==(int.Parse(a[i-1])+1).ToString()){n+=a[i]+",";}else{n=n.TrimEnd(',');if(n!=""&&n.IndexOf(",")>-1){ls.Add(n.TrimEnd(','));n=a[i]+",";}}}}///intcou=ls.Count;//符合条件的个数

还一个总组数怎么出来

总数组是什么意思?描述一下

里面1跟2是一个连续的组4跟5是一个连续的组总数是2组

string[]a={"1","2","4","5","7","9"};stringn="";List<string[]>ls=newList<string[]>();for(inti=0;i<a.Length;i++){if(i==0){n+=a[i]+",";}else{if(a[i]==(int.Parse(a[i-1])+1).ToString()){n+=a[i]+",";}else{n=n.TrimEnd(',');if(n!=""&&n.IndexOf(",")>-1){ls.Add(n.Split(','));n=a[i]+",";}}}}///intcou=ls.Count;//符合条件的个数

定义变了,List<string>ls=newList<string>();换成List<string[]>ls=newList<string[]>();了
解决方案九:
给你写一个usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){vararr=newint[]{1,2,3,5,6,9,11,12};varresult=寻找连续数字(arr).ToList();foreach(varsinresult){foreach(varxins)Console.Write("{0}",x);Console.WriteLine();}Console.WriteLine("总共找到{0}组!",result.Count);Console.WriteLine("__________按任意键结束");Console.ReadKey();}privatestaticIEnumerable<IEnumerable<int>>寻找连续数字(int[]arr){return寻找连续数字(arr,0,arr.Length-2);}privatestaticIEnumerable<IEnumerable<int>>寻找连续数字(int[]arr,intstart,intend){for(vari=start;i<=end;i++){varx=寻找连续数字(arr,i);if(x!=null)yieldreturnx;}}privatestaticIEnumerable<int>寻找连续数字(int[]arr,intstart){varend=start+1;for(;end<arr.Length&&arr[end]==arr[end-1]+1;end++){}if(end-start>1)returnarr.Skip(start).Take(end-start);elsereturnnull;}}}

不过看得懂c#语法而看不懂算法逻辑,其实一点也没用。希望你要注意。
解决方案十:
排下序,然后从第一个往后按索引循环判断下,如果前一个值与当前值相比差1,就是连续的
解决方案十一:
如果你需要跳过“包含”的输出组(例如1、2、3就包含了2、3),那么可以增加一个“跳过i下标”语句即可:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){vararr=newint[]{1,2,3,5,6,9,11,12};varresult=寻找连续数字(arr).ToList();foreach(varsinresult){foreach(varxins)Console.Write("{0}",x);Console.WriteLine();}Console.WriteLine("总共找到{0}组!",result.Count);Console.WriteLine("__________按任意键结束");Console.ReadKey();}privatestaticIEnumerable<IEnumerable<int>>寻找连续数字(int[]arr){return寻找连续数字(arr,0,arr.Length-2);}privatestaticIEnumerable<IEnumerable<int>>寻找连续数字(int[]arr,intstart,intend){for(vari=start;i<=end;i++){varx=寻找连续数字(arr,i);if(x!=null){yieldreturnx;i+=x.Count()-1;}}}privatestaticIEnumerable<int>寻找连续数字(int[]arr,intstart){varend=start+1;for(;end<arr.Length&&arr[end]==arr[end-1]+1;end++){}if(end-start>1)returnarr.Skip(start).Take(end-start);elsereturnnull;}}}

时间: 2024-10-14 16:48:18

数组连续数的相关文章

数组 连续 判断-循环逻辑问题,在判断语句里获得连续进入判读语句的次数

问题描述 循环逻辑问题,在判断语句里获得连续进入判读语句的次数 如有一数组数据: 1,1,2,1,2,2,1,1,1,2,1,2,1,2,1,2,2,2,2 如何判断连续1后面为2的连续数 如(1,2)(1,2)(1,2) 如: 第1个数:1后面是1,条件不成立 第2个数:1后面是2,条件成立,连续数为1,将连续数赋值给max 第4个数:1后面是2,条件成立,连续数为2,将陆续数赋值给max 第7个数:1后面是1,条件不成立.连续数重置为0, 第8个数:1后面是1,条件不成立 第9个数:1后面是

c++-C++如何创建动态二维数组,然后将二维数组的数保存到一维数组中?

问题描述 C++如何创建动态二维数组,然后将二维数组的数保存到一维数组中? //此程序是我自己编的,但是不能通过,请问这是怎么回事? #include using namespace std; int main() { int n,m,k,i,j,l; cin>>n>>m>>k; int X[][]={0}; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { X[i][j]=i*j; } int Y[]={0}; for(i=1;i

宝宝类产品余额宝收益连续数月垫底 已成阿里负担

余额宝收益连续数月垫底规模已经成为余额宝的负担经历 野蛮生长之后,国内互联网金融正在面临成长烦恼,以致于境外媒体最近也在唱衰余额宝.截至7月28日,余额宝的7日年化收益为4.184%,微信理财通为4.393%,百度百赚为4.685%,新浪微财富为4.459%,京东小金库为4.779%,网易现金宝为4.459%,苏宁零钱宝为4.536%."宝宝们"的收益一路下探,深不见底,而行业龙头余额宝则最为悲催,迄今已经连续多个月收益垫底.抛开其他互联网理财产品,在此单独来谈谈马云的余额宝.为什么是

JavaScript实现列出数组中最长的连续数

  原始题目: 给定一个无序的整数序列, 找最长的连续数字序列. 例如: 给定[100, 4, 200, 1, 3, 2], 最长的连续数字序列是[1, 2, 3, 4]. 小菜给出的解法: 代码如下: function maxSequence(array,step){ var _array = array.slice(), //clone array _step = 1, _arrayTemp = [], i = 0; var parseLogic = { //result container

php 数组比较,查找连续数实例

$data = array(); $data[]= array("01" ,"02", "18" , "29" , "31" , "32"); $data[]= array("02" ,"09", "11" , "22" , "24" , "27"); $data[]=

JavaScript实现列出数组中最长的连续数_javascript技巧

原始题目: 给定一个无序的整数序列, 找最长的连续数字序列. 例如: 给定[100, 4, 200, 1, 3, 2], 最长的连续数字序列是[1, 2, 3, 4]. 小菜给出的解法: 复制代码 代码如下: function maxSequence(array,step){   var _array = array.slice(),  //clone array       _step = 1,       _arrayTemp = [],       i = 0;   var parseLo

VB中判断数组维数

数组 设计思想:在VB中数姐最大维数是60,所以我们通过错误捕捉来处理这个问题,在这里我们用到UBound函数Public Function ArrayRange(mArray As Variant) As Integer Dim i As Integer Dim Ret As Integer Dim ErrF As Boolean ErrF = False On Error GoTo ErrHandle '判断代入的参数是否为数组 If Not IsArray(mArray) Then Arr

华谊连续数年“画饼”不兑现7.6亿应收款玄机多

尽管创业板行情向上.眼花缭乱的并购是华谊兄弟股价不断攀升的外因,但在一些业内人士看来,资本运作和机构的推动更是华谊兄弟不断创新高的内在因素.Wind数据显示,截至2012年6月30日,共有133只基金进驻华谊兄弟,合计持股1.46亿股,占全部流通股36%,再加上腾讯.社保基金.券商理财产品,机构持股数达到1.83亿,占全部流通股的44.68%,机构阵容甚至超过贵州茅台.没有多少人真正关心传媒第一股华谊兄弟的实际业绩."大量的机构目前被华谊兄弟绑架了.万一华谊股票出现大幅回调,机构将遭受巨大损失.

vb2010 不确定数组维数的过程输出

问题描述 我的程序需要个过程返回一组坐标值,PicturBox画线时用,一根线一组坐标,线的根数不确定,用数组返回值时比较麻烦,如果用多个过程分别返回,批量运算时浪费时间.在网上也没度到List(ofT),ArrayList的具体示例.请高手帮我做个示例.fori=1to1500X1=i*3(公式将来用其他公式替换)X2=i*5,X3=i*8X4=i*13X5=i*26next一根线时随意记录一个值,二根时随便记录二组的值,三根时随意记录三根.帮忙做个示例,并贴上代码,我能调出各个值去画线就行,