有一个数组[1,1,1,2,3,4,5,8,10,22,24,25,26,66],请写一个方法把数组变成[1,1,[1,2,3,4,5],8,10,22,[24,25,26],66]就是把里面连续递增的数字归成一个数组,没思路,有没有好的方案?

bluesky1年前 ⋅ 772 阅读
可以用循环遍历数组,对于连续递增的数字,记录其起始位置和结束位置,然后将其放入一个新的数组中,不是连续递增的数字则直接放入新的数组中。具体实现如下:

```python
def group_arr(arr):
    res = []
    start = 0
    for i in range(len(arr) - 1):
        if arr[i] + 1 != arr[i+1]:  # 不连续
            if start == i:
                res.append(arr[i])
            else:
                res.append(arr[start:i+1])
            start = i+1
    if start == len(arr)-1:  # 处理最后一个元素
        res.append(arr[-1])
    else:
        res.append(arr[start:])
    return res
```

测试:

```python
arr = [1,1,1,2,3,4,5,8,10,22,24,25,26,66]
print(group_arr(arr))
```

结果为:

```python
[1, 1, [1, 2, 3, 4, 5], 8, 10, 22, [24, 25, 26], 66]
```

全部评论: 0

    相关推荐