讨论/算法和数据结构/一道由实际工作转变而来的算法题/
一道由实际工作转变而来的算法题
public static void main(String[] args) {
    //将连续的数据取出,放置单独数组
    //注意:产生的数组个数是未知的,此处给定数据,实际不固定数据多少
    //结果如:int [] a={4,4,4,4,4,4} int b={2,2,2} int [] c={3,3,3,3} int d={4,4}
    int[] abc = {10,9,7,5,12,45,2,1,4,4,4,4,4,4,1,2,2,2,11,3,3,3,3,4,5,8,5,45,97,4,4};
    

}

希望可以得到答案,JAVA语言,使用流操作也可以

展开讨论
Penn发起于 2019-11-06

这个直接遍历,遍历到某个位置只需要寻找后面连续跟它一样的,形成线段,线段长度为1记录一下即可,见代码

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Test {

    static List<int[]> split(int[] origin) {
        List<int[]> result = new ArrayList<>();
        int left = 0;
        while (left < origin.length) {
            int right = left + 1;
            while (right < origin.length && origin[right] == origin[left]) {
                right++;
            }
            if (right - left > 1) {
                int[] sub = new int[right - left];
                Arrays.fill(sub, origin[left]);
                result.add(sub);
            }

            left = right;
        }
        return result;
    }

    public static void main(String[] args) throws IOException {
        List<int[]> result = split(new int[]{10,9,7,5,12,45,2,1,4,4,4,4,4,4,1,2,2,2,11,3,3,3,3,4,5,8,5,45,97,4,4});
        for (int[] sub: result) {
            System.out.println(Arrays.toString(sub));
        }
    }

}
2
展开全部 3 讨论