题解 | #牧场奶牛集合区域#

牧场奶牛集合区域

https://www.nowcoder.com/practice/89218acf98234315af1cb3a223935318

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param groups int整型一维数组
     * @param n int整型
     * @return int整型二维数组
     */
    public int[][] findGatheringAreas (int[] groups, int n) {
        
        // write code here
        ArrayList<ArrayList<Integer> > alls = new ArrayList<>();
        int tx = 0, ty = 0;//区间[tx, ty]
        for (int i = 0; i < groups.length; i++) {
            if (i == 0) {//第一个点就是一个区间
                tx = groups[i];
                ty = groups[i];
            } 
            else {
                if (groups[i] == ty + 1) {//当前点能和上一个区间合并
                    ty = ty + 1;
                } else {//不能合并
                    ArrayList<Integer> tmp = new ArrayList<>();
                    tmp.add(tx); tmp.add(ty);
                    alls.add(tmp);//区间加进去
                    tx = groups[i];//新开一个区间
                    ty = groups[i];
                }
            }
        }
        int tn = alls.size();
        if (tn == 0 || alls.get(tn - 1).get(0) != tx) {//最后一个区间有没有加进去
            ArrayList<Integer> tmp = new ArrayList<>();
            tmp.add(tx); tmp.add(ty);
            alls.add(tmp);
        }
        int[] res[] = new int[alls.size()][2];//转为数组
        for(int i = 0; i < alls.size(); i++){
            res[i][0] = alls.get(i).get(0);
            res[i][1] = alls.get(i).get(1);
        }
        return res;
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务