如何将一组数按照规则拆分成多个数组,求一算法

zhc088 2016-12-17 10:57:46
求一算法:
现接收到的数组为【5,0,0,0,0,6,1,1,1,1,1,7,2,2,2,2,2,2...】, 如何将这数据按照固定规则解析成多个数组?
规则为:数组中第一个值为要取的长度(包括自己)。
解析成的数组应为
【5,0,0,0,0】
【6,1,1,1,1,1】
【7,2,2,2,2,2,2】
...全文
1887 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Inhibitory 2016-12-17
  • 打赏
  • 举报
回复
import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        Integer[] numbers = {5, 0, 0, 0, 0, 6, 1, 1, 1, 1, 1, 7, 2, 2, 2, 2, 2, 2, 3};

        for (int start = 0; start < numbers.length; start += numbers[start]) {
            int end = start + numbers[start];
            end = (end >= numbers.length) ? numbers.length : end;

            Integer[] temp = Arrays.copyOfRange(numbers, start, end);
            System.out.println(Arrays.toString(temp));
        }
    }
}
输出
[5, 0, 0, 0, 0]
[6, 1, 1, 1, 1, 1]
[7, 2, 2, 2, 2, 2, 2]
[3]
oh_Maxy 2016-12-17
  • 打赏
  • 举报
回复
这个是要依赖传过来的数组本身,要保证数据正确性的。 在数据正确的前提下,就一个个解析呗。

import java.util.ArrayList;
import java.util.List;

public class Demo1 {

    public static void main(String[] args) {
        // 入参数据
        int[] nums = { 5, 0, 0, 0, 0, 6, 1, 1, 1, 1, 1, 7, 2, 2, 2, 2, 2, 2 };
        // 结果用二维List存放
        List<List<Integer>> resultList = new ArrayList<List<Integer>>();

        // 存储每个新行的数量,为0则读取下一个数字作为新行数量
        int size = 0;
        List<Integer> line = null;
        // 开始遍历入参
        for (Integer num : nums) {
            if (size <= 0) {
                size = num;
                line = new ArrayList<Integer>();
            }
            // 每个数值都要写入结果集
            line.add(num);
            size--;
            // size到达0,则当前行结束
            if (size <= 0) {
                resultList.add(line);
            }
        }

        // 打印结果// 如果需要,自己再转换为数组
        System.out.println(resultList);
    }
}

58,453

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧