中兴捧月B题和D题求解答
B和D题有AC的兄弟吗。。帮忙说下有什么坑?我测试用例过了,但最后提交都不过。。
附上我的代码
/**
*B
*/
import java.util.*;
public class Main{
public static void main(String[] args){
int i = 0;
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
ArrayList<Integer> length = new ArrayList<Integer>();
i = n;
while(i--!=0) length.add(sc.nextInt());
ArrayList<Integer> ans = new ArrayList<Integer>();
i=0;
while(i<n){
ans.add(i,1);
i++;
}
// Arrays.fill(ans,1);
int cnt = 1;//从第一天开始算
while(cnt<n+1){//执行n次
while(length.get(cnt-1)>1){
int left = (length.get(cnt-1))>>1;
int right = length.get(cnt-1) - left;
length.set(cnt-1,left>right? left : right);
ans.set(cnt-1,ans.get(cnt-1)+1);
}
cnt++;
}
for(i=0;i<n;i++){
System.out.println(ans.get(i));
}
}
} /**
*D
*/
import java.util.*;
public class Main{
public static class Node{
int key;
Node prev;
Node next;
public Node(int key){
this.key = key;
}
}
public static void main(String[] args){
Map<Integer,Node> map;
map = new HashMap<>();
Node dummy1 = new Node(-1);
Node tail1 = dummy1;
Node dummy2 = new Node(-2);
Node tail2 = dummy2;
Scanner sc = new Scanner(System.in);
String input1[] = sc.nextLine().trim().split(" {1,}");
int n1 = Integer.parseInt(input1[0]);
for(int i=1;i<=n1;i++){
tail1.next = new Node(i);
tail1.next.prev = tail1;
tail1 = tail1.next;
map.put(i,tail1);
}
/*
Node temm1 = dummy1.next;
while(temm1!=null){
System.out.println(temm1.key);
temm1 = temm1.next;
}
*/
int n2 = Integer.parseInt(input1[1]);
for(int i = n1+1;i<=n1+n2;i++){
tail2.next = new Node(i);
tail2.next.prev = tail2;
tail2 = tail2.next;
map.put(i,tail2);
}
int q = Integer.parseInt(input1[2]);
String input2[] = sc.nextLine().trim().split(" {1,}");
int change = 0;
for(int i=0;i<q;i++){
change = Integer.parseInt(input2[i]);
Node move = map.get(change);
// System.out.println("========move=========\n" + move.key);
move.prev.next = move.next;
if(move.next!=null){//NOTE
move.next.prev = move.prev;
}
if(change<=n1){
// System.out.println("============move in queue1==========");
// System.out.println("move.key=" + move.key);
// System.out.println("tail1 = " + tail1.key);
// System.out.println("tail2 = " + tail2.key);
if(move == tail1){//NOTE
tail1 = tail1.prev;
}
tail2.next = move;
move.prev = tail2;
move.next = null;
tail2 = move;//NOTE
}
else{//move in queue2
// System.out.println("============move in queue2==========");
// System.out.println("move.key=" + move.key);
// System.out.println("tail1 = " + tail1.key);
// System.out.println("tail2 = " + tail2.key);
if(move == tail2){//NOTE
tail2 = tail2.prev;
}
tail1.next = move;
move.prev = tail1;
move.next = null;
tail1 = move;//NOTE
}
// System.out.println("==========queue1========");
// Node temm1 = dummy1.next;
// while(temm1!=null){
// System.out.println(temm1.key);
// temm1 = temm1.next;
// }
// System.out.println("=======================");
//
// System.out.println("==========queue2========");
// Node temm2 = dummy2.next;
// while(temm2!=null){
// System.out.println(temm2.key);
// temm2 = temm2.next;
// }
// System.out.println("=======================");
//
}
dummy1 = dummy1.next;
System.out.print(dummy1.key);
dummy1 = dummy1.next;
while(dummy1!=null){
System.out.print(" " + dummy1.key);
dummy1 = dummy1.next;
}
System.out.print("\n");
dummy2 = dummy2.next;
System.out.print(dummy2.key);
dummy2 = dummy2.next;
while(dummy2!=null){
System.out.print(" " + dummy2.key);
dummy2 = dummy2.next;
}
}
}
途虎成长空间 159人发布
查看9道真题和解析