字节跳动-第二批笔试 油瓶个数
可以使用图的广度遍历完成油瓶数搜索,孤立的点将不会被处理 100%
package algorithm.bytecode;
import java.util.*;
public class First {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String mStr = in.nextLine();
int m = Integer.valueOf(mStr);
int[][] mm = new int[m][m];
for (int i = 0; i < m; i++) {
String line = in.nextLine();
mm[i] = parseIntArr(line);
}
int result = solution(mm);
System.out.println(result);
}
public static int solution(int[][] data) {
int length = data.length;
boolean[] visited = new boolean[length];
Arrays.fill(visited, false);
List<List<Integer>> result = new ArrayList<>();
Queue<Integer> queue = new LinkedList<>();
for (int i = 0; i < length; i++) {
if (visited[i]) {
continue;
}
List<Integer> list = new ArrayList<>();
queue.offer(i);
visited[i] = true;
while (!queue.isEmpty()) {
int current = queue.poll();
list.add(current);
for (int k = 0; k < length; k++) {
if (visited[k]) continue;
// 与current亲密度大于等于3
if (data[current][k] >= 3) {
queue.offer(k);
visited[k]=true;
}
}
}
result.add(list);
}
// System.out.println(result);
int count = result.size();
for (int i = 0; i < length; i++) {
if (!visited[i]) {
count++;
}
}
return count;
}
public static int[] parseIntArr(String line) {
String[] strings = line.split(" ");
int[] data = new int[strings.length];
for (int i = 0; i < strings.length; i++) {
data[i] = Integer.valueOf(strings[i]);
}
return data;
}
}
科大讯飞公司氛围 474人发布
查看25道真题和解析