9.13微众银行笔试
题目不记得了,贴个代码吧
第一题
package one;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
LinkedHashSet<Integer> set = new LinkedHashSet<>();
for (int i = n - 1; i >= 0; i--) {
if(set.contains(a[i])){
continue;
}
set.add(a[i]);
}
ArrayList<Integer> ans = new ArrayList<>(set);
// System.out.println(ans);
for (int i = ans.size() - 1; i >= 0; i--) {
System.out.print(ans.get(i) + " ");
}
}
}
第二题
package two;
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
LinkedList<Integer> list = new LinkedList<>();
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
list.addLast(sc.nextInt());
}
while (!list.isEmpty()){
Integer first = list.removeFirst();
System.out.print(first + " ");
if(list.isEmpty()){
break;
}
list.addLast(list.removeFirst());
}
}
}
第三题
思路:两个 set,一个保存起点能到的点,一个人保存终点能到的点。然后取交集,若交集不为空,求组合数 Cn2,若交集为空答案就是两个 set.size() 的乘积
package three;
import java.util.*;
/*
3 2 1 3
1 2
2 3
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int s = sc.nextInt();
int t = sc.nextInt();
HashMap<Integer, LinkedList<Integer>> graph = new HashMap<>();
for (int i = 0; i < m; i++) {
int x = sc.nextInt();
int y = sc.nextInt();
graph.putIfAbsent(x, new LinkedList<>());
graph.get(x).add(y);
graph.putIfAbsent(y, new LinkedList<>());
graph.get(y).add(x);
}
HashSet<Integer> start = new HashSet<>();
HashSet<Integer> end = new HashSet<>();
HashSet<Integer> visit = new HashSet<>();
ArrayDeque<Integer> queue = new ArrayDeque<>();
start.add(s);
queue.add(s);
while (!queue.isEmpty()) {
Integer head = queue.pollFirst();
visit.add(head);
start.add(head);
LinkedList<Integer> nexts = graph.get(head);
if(nexts== null){
break;
}
for (Integer next : nexts) {
if (visit.contains(next)) {
continue;
}
queue.addLast(next);
visit.add(next);
}
}
queue = new ArrayDeque<>();
visit = new HashSet<>();
end.add(t);
queue.add(t);
while (!queue.isEmpty()) {
Integer head = queue.pollFirst();
visit.add(head);
end.add(head);
LinkedList<Integer> nexts = graph.get(head);
if(nexts== null){
break;
}
for (Integer next : nexts) {
if (visit.contains(next)) {
continue;
}
queue.addLast(next);
visit.add(next);
}
}
// System.out.println(start);
// System.out.println(end);
HashSet<Integer> tmp = new HashSet<>(start);
boolean flag = tmp.retainAll(end);
int ans = 0;
if(!flag){
//组合数Cn2
ans = n * (n - 1) / 2;
}else {
ans = start.size() * end.size();
}
System.out.println(ans);
}
}
#微众银行#
基恩士成长空间 419人发布