1025(21)
package com.company; import java.util.Scanner; public class Main { private static int m; public static void main(String[] args) { // write your code here Scanner sc=new Scanner(System.in); String nodex=sc.next(); int n=sc.nextInt(); int k=sc.nextInt(); String[] first=new String[n]; int[] num=new int[n]; String[] last=new String[n]; String[] address=new String[n+1]; for (int i=0;i<n;i++){ first[i]=sc.next(); num[i]=sc.nextInt(); last[i]=sc.next(); } //获取链表address for (int i=1;i<n+1;i++){ for (int j=0;j<n;j++){ if (i==num[j]){ address[i-1]=first[j]; } if (num[j]==n){ address[n]=last[j]; } } } //接下来将address进行反转 String[] reverse=new String[n+1]; int count=(n+1)/k; for (int i=0;i<count;i++){ for (int j=i*k,m=0;j<k*(i+1);j=j+1,m++){ if (i+1<=count&&m<k){ reverse[j]= address[(i+1)*k-m-1]; } } m=0; } //倒转数组reverse for (int i=k*count;i<n+1;i++){ reverse[i]=address[i]; } for (int j=0;j<n;j++){ for (int i=0;i<n;i++){ if (reverse[j]==first[i]){ System.out.println(reverse[j]+" "+num[i]+" "+reverse[j+1]); } } } } }
很痛苦的java选手,明明做出来了,却被判0分,一个超时,其它全错。牛客上一个正确,其它全超时!和qq群里的一个朋友交流,他说这个题目给的输入的n行数据里面的中间项数字并不是链表的顺序,链表头应由输入的第一个目标地址决定。改了一下程序,得21分,一个超时一个错误,和那位哥们结果一样,他还用上了数据结构的知识,不深究,现就这样,上代码
import java.util.Scanner; public class Main { private static int m; public static void main(String[] args) { // write your code here Scanner sc=new Scanner(System.in); String nodex=sc.next(); int n=sc.nextInt(); int k=sc.nextInt(); String[][] str=new String[n][3]; for (int i=0;i<n;i++){ str[i][0]=sc.next(); str[i][1]=sc.next(); str[i][2]=sc.next(); } //获取链表address /* 已知链表第一个元素 * 根据第一个元素查询二链表,获取下一个元素 * */ String[] address=new String[n+1]; address[0]=nodex; for (int i=0;i<n+1;i++){ for (int j=0;j<n;j++){ if (address[i].equals(str[j][0])){ address[i+1]=str[j][2]; } } } //接下来将address进行反转 String[] reverse=new String[n+1]; int count=(n+1)/k; for (int i=0;i<count;i++){ for (int j=i*k,m=0;j<k*(i+1);j=j+1,m++){ if (i+1<=count&&m<k){ reverse[j]= address[(i+1)*k-m-1]; } } m=0; } //倒转数组reverse for (int i=k*count;i<n+1;i++){ reverse[i]=address[i]; } for (int j=0;j<n;j++){ for (int i=0;i<n;i++){ if (reverse[j].equals(str[i][0])){ System.out.println(reverse[j]+" "+str[i][1]+" "+reverse[j+1]); } } } } }
勿在浮沙筑高台

浙公网安备 33010602011771号