一个计算数字数组概览的算法

已知数组 a = [0,1,2,3,5,7,8,9]
要求输入其“概览” [0..3,5,7..9]

用ruby实现如下:

def sum_ary(ary)
    tmp = []
    start_v,end_v=-1,-1
    is_start = false
    idx = 0
    count = ary.count
    ary.each_with_index do |v,i|
        if(i+1<count)
            sub = ary[i+1] - v
            if(sub == 1)
                if(is_start)
                    next
                else
                    is_start = true
                    start_v = v
                end
            else
                if(is_start)
                    is_start = false
                    end_v = v
                    tmp.push(Range.new(start_v,end_v))
                else
                    tmp.push(v)
                end
            end
        else
        #condition for i+1>=count
            if(is_start)
                is_start = false
                end_v = v
                tmp.push(Range.new(start_v,end_v))
            else
                tmp.push(v)
            end
        end
    end
    tmp
end
时间: 2024-10-12 10:52:40

一个计算数字数组概览的算法的相关文章

一个计算数字数组概览的算法2

在先前的博文中提到了如何自己写一个算法来实现该功能.虽然算法很简单,但毕竟需要自己实现.如果用objc的话,其Foundation中自带了NSIndexSet和NSMutableIndexSet类,可以很方便的为我们解决这个问题: NSMutableIndexSet *set = [NSMutableIndexSet indexSet]; NSArray *ary = @[@0,@1,@2,@3,@5,@7,@8,@9,@27]; for(NSNumber *n in ary){ [set ad

一个计算数字的步数算法

这两天看了下某位大神的github,知道他对算法比较感兴趣,看了其中的一个计算数字的步数算法,感觉这个有点意思,所以就自己实现了一个 算法描述与实现原理 给出一个整型数字,统计出有多少种走法可以到达目标,比如一个数字4,可以有下面几种走法 [ 1, 3 ] [ 4 ] [ 1, 1, 2 ] [ 2, 2 ] [ 1, 1, 1, 1 ] 其实通过上面的组合可以得出下面的结论 先列出所有项是1的组合 依次从左到右项为1的组合 递归上面的集合,找出项里1的索引,然后计算左起2项的值,结果递归此操作

JavaScript实现的一个计算数字步数的算法分享_javascript技巧

这两天看了下某位大神的github,知道他对算法比较感兴趣,看了其中的一个计算数字的步数算法,感觉这个有点意思,所以就自己实现了一个. 算法描述与实现原理 给出一个整型数字,统计出有多少种走法可以到达目标,比如一个数字4,可以有下面几种走法 复制代码 代码如下:     [ 1, 3 ]         [ 4 ]     [ 1, 1, 2 ]         [ 2, 2 ]     [ 1, 1, 1, 1 ] 其实通过上面的组合可以得出下面的结论. 1.先列出所有项是1的组合 2.依次从

代码-用递归能实现一个数组划分的算法么?

问题描述 用递归能实现一个数组划分的算法么? 用递归能实现一个数组划分的算法么? 给一个数组,长度为m,划分成n个子数组(每个数组起码有一个元素),比如 {1 2 3 4 5}划分成2个: 1, 2345 12,345 123,45 1234,5一共5个分法 {1234}分成3个 1,2,34 1,23,4 12,3,4,一共3个分法 求代码怎么写 解决方案 IEnumerable<IEnumerable<IEnumerable<int>>> Split(IEnumer

算法 全排列 动态规划-有一个由数字1,2,3,4,5,6,7,8,9组成的数字串(长度不超过200),问如何将M个加号插入这个串中

问题描述 有一个由数字1,2,3,4,5,6,7,8,9组成的数字串(长度不超过200),问如何将M个加号插入这个串中 所得的算术表达式的值最小,加号不能加在数字串的最前面或最末尾,也不应有两个或两个以上的加号相邻 解决方案 什么语言啊?没分给吗? 解决方案二: 什么语言啊?没分给吗? 解决方案三: VB.NET假定你的字符串变量名是TXTDIM TXT1DIM NEWTXT AS STRINGDIM A AS INT32FOR A=1 TO LEN(TXT)IF A=LEN(TXT) THEN

c++-用new申请了一个结构体数组,delete时内存错误

问题描述 用new申请了一个结构体数组,delete时内存错误 strong text //////////////////////////////////////CLOCK算法部分//////////////////void CLOCK(){ arr *page_t; int ijpointertimes=0flag=-1num=0;//pointer为查找位置 page_t=new arr[m];//==============================开始计算============

关于一个大数据量的查找算法

问题描述 关于一个大数据量的查找算法 如果有一到一亿个数乱序排列,可以操作最后一个位置前面的所有数,问怎么才能最快知道最后一个位置的数是多少? 解决方案 就是遍历读取排列中的数据,以数据作为数组的下标,同时给这个数组元素赋值为1.这样把排列中倒数第二个以前所有数据过一遍. 最后把数组再遍历一次,看那个元素值为0,它的下标就是排列最后一个. 解决方案二: 开一个100000000元素的数组arr,遍历数字,如果一个数字是123,那么就让arr[123]加1,以此类推. 相当于基数排序. 解决方案三

c语言-请教一个C编程 打印输出图像的算法编程

问题描述 请教一个C编程 打印输出图像的算法编程 解决方案 大概就是这样,建立笛卡尔坐标系. 用point()函数里的嵌套for循环来输出每一个字符,然后把代表坐标的i和j传递给getChar()函数通过坐标来决定输出的是什么字符. 解决方案二: char getChar(int x,int y,int n) { if(x<0) x=-x; if(y<0) y=-y; if(x>y) { if(n-x<=2) return 'x'+n-x; else return '0'+n-x-

JS实现的数组全排列输出算法

 这篇文章主要介绍了JS实现的数组全排列输出算法,实例分析了全排列的原理与相关的javascript实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JS实现的数组全排列输出算法.分享给大家供大家参考.具体分析如下: 这段js代码对数组进行全排列输出,改进了一些老的代码 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列. ? 1 2 3 4 5 6 7 8 9 10 11 12