一根绳上有100个小球,两两相连,每种球有颜色(红橙黄绿蓝靛紫),求出相同颜色最大相连的小球个数,颜色和第一个球的下标

题目:一根绳上有100个小球,两两相连,每种球有颜色(红橙黄绿蓝靛紫),求出相同颜色最大相连的小球个数,颜色和第一个球的下标
初步思路:1.定义一个数组(红橙黄绿蓝靛紫)
2.随机生成100个颜色
用Java实现

运行结果如下:

img

代码如下:

public static void main(String[] args) {
        int[] a = new int[100];
        for(int i = 0;i<100;i++)
        {
            a[i] = (int) (Math.random()*6);//生成0-6的随机数,表示颜色
            System.out.print(a[i]+" ");
            if((i+1)%10==0)
                System.out.println();
        }
        int maxlen = 0,index = 0;
        int cnt = 1;
        for(int i=1;i<100;i++){
            if(a[i] == a[i-1]){
                cnt++;
            }else{
                
                if(cnt > maxlen){
                    index = i-cnt;
                    maxlen = cnt;
                }
                cnt = 1;
                    
            }
        }
        if(cnt > maxlen){
            index = 100 - cnt -1;
            maxlen = cnt;
        }
        System.out.println("maxlen="+maxlen +"  ,index = "+index);    
    } //main end


public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        Random r = new Random();
        int[] arr = new int[100];
        for(int i = 0; i < 100; i++){
            arr[i] = r.nextInt(7);//0-6代表七种颜色
        }

        System.out.println(Arrays.toString(arr));//输出生成的数组
        System.out.println(main.getMaxConnect(arr));//输出结果
    }

    private int getMaxConnect(int[] arr){
        int ans = 1;
        int prev = arr[0];
        int cnt = 0;
        for(int i = 0; i < arr.length; i++){
            cnt = arr[i]==prev?cnt+1:1;
            prev = arr[i];
            ans = Math.max(cnt,ans);
        }
        return ans;
    }
}