当时考试的时候自己思路混乱。发挥成一坨了,考试结束后,完成了前两题的代码如下,第三题今天找时间再做一下,好遗憾,亲爱的网易有道啊!
总共3道题目:
1构造队列
以下为实现代码,由于昨晚时间比较晚了,注释没写,有问题可以评论讨论,谢谢大家!
package Main;
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int T=s.nextInt();
LinkedList<Integer> list=new LinkedList<Integer>();
for(int i=0;i<T;i++){
int n=s.nextInt();
// System.out.println("shuru"+n);
list.add(n);
sort(list,n);
show(list);
list.clear();
}
}
public static LinkedList sort(LinkedList list,int n){
if(n==1){
return list;
}else{
list.addFirst(n-1);
int len=list.size();
list.addFirst(list.get(len-1));
list.removeLast();
n-=1;
// System.out.println("sort"+n);
// show(list);
return sort(list,n);
}
}
public static void show(LinkedList list){
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+" ");
}
System.out.println();
}
}
2洗牌
package Main2;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int T=in.nextInt();
List<Integer> list=new ArrayList<Integer>();
for(int i=0;i<T;i++){
int n=in.nextInt();
int m=in.nextInt();//混合次数
for(int j=0;j<2*n;j++){
list.add(in.nextInt());
}
// show(list);
List<Integer> listChild1=new ArrayList<Integer>();
List<Integer> listChild2=new ArrayList<Integer>();
List<Integer> res=new ArrayList<Integer>();
res=list;
for(int k=0;k<m;k++){
listChild1=segment(res,0);
listChild2=segment(res,1);
res=mixture(listChild1,listChild2);
}
show(res);
list.clear();
}
}
//list表示要分隔的list;flag==0,分割前半段,flag==1返回分割后半段结果
public static List segment(List<Integer> list,int flag){
List<Integer> listChild=new ArrayList<Integer>();
if(flag==0){
for(int i=0;i<list.size()/2;i++){
listChild.add(list.get(i));
}
}else if(flag==1){
for(int i=list.size()/2;i<list.size();i++){
listChild.add(list.get(i));
}
}
return listChild;
}
//list1,list2分别为要混合的两段list,返回混合之后的结果
public static List mixture(List<Integer> list1,List<Integer> list2){
List<Integer> list=new ArrayList<Integer>();
for(int i=0;i<list1.size();i++){
list.add(list1.get(i));
list.add(list2.get(i));
}
return list;
}
public static void show(List list){
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+" ");
}
System.out.println();
}
}
第三题,今天晚上做好再分享,不是大神,只是一个JAVA小白,希望大家指正