886. Possible Bipartition
发布时间:2020-12-14 04:16:40 所属栏目:大数据 来源:网络整理
导读:1 class Solution { 2 int [] colors; 3 public boolean possibleBipartition( int N, int [][] dislikes) { 4 if (dislikes.length == 0) return true ; 5 HashMapInteger,ListInteger graph = new HashMap (); 6 for ( int [] dislike : dislikes){ 7 if (
1 class Solution { 2 int[] colors; 3 public boolean possibleBipartition(int N,int[][] dislikes) { 4 if(dislikes.length == 0) return true; 5 HashMap<Integer,List<Integer>> graph = new HashMap<>(); 6 for(int[] dislike : dislikes){ 7 if(!graph.containsKey(dislike[0])){ 8 graph.put(dislike[0],new ArrayList<>()); 9 } 10 if(!graph.containsKey(dislike[1])){ 11 graph.put(dislike[1],new ArrayList<>()); 12 } 13 graph.get(dislike[0]).add(dislike[1]); 14 graph.get(dislike[1]).add(dislike[0]); 15 } 16 colors = new int[N+1]; 17 for(int i = 1; i <= N; i++){ 18 if(colors[i] == 0){ 19 if(!dfs(graph,i,1)){ 20 return false; 21 } 22 } 23 24 } 25 return true; 26 27 28 } 29 30 public boolean dfs(HashMap<Integer,List<Integer>> graph,int num,int color){ 31 if(colors[num] == 0){ 32 colors[num] = color; 33 }else if(colors[num] != color){ 34 return false; 35 }else{ 36 return true; 37 } 38 if(!graph.containsKey(num)) return true; 39 List<Integer> list = graph.get(num); 40 for(int person : list){ 41 if(dfs(graph,person,-color) == false){ 42 return false; 43 } 44 } 45 return true; 46 47 } 48 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |