java 80分求助,最后一个点TLE
查看原帖
java 80分求助,最后一个点TLE
915148
XieLee楼主2023/2/8 10:29
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

public class Main {
	static StreamTokenizer st= new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	public static void main(String[] args) {
		PrintWriter pw =new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
		int n=nextInt();
		int m=nextInt();
		int []arr=new int[n];
		int []can=new int[m];
		for(int i=0;i<n;i++)
		{
			arr[i]=nextInt();
		}
		for(int i=0;i<m;i++)
		{
			can[i]=nextInt();
		}
		StringBuilder sb=new StringBuilder();
		for(int j=0;j<m;j++)
		{
			sb.append(erfen(can[j],arr,0,arr.length-1)+1+" ");
		}
		pw.print(sb);
		pw.flush();
	}
	private static int erfen(int i, int[] arr,int start,int end) {
		if(start==end&&arr[start]!=i)
		{
			return -2;
		}
		int loc =(start+end)>>1;
		if(i==arr[loc])
		{
			while(loc-1>=0&&arr[loc-1]==i)
			{
				loc--;
			}
			return loc; 
		}else if(i<arr[loc])
		{
			return erfen(i,arr,start,loc);
		}
		else
		{
			return erfen(i,arr,loc+1,end);
		}
		
		
	}
	static int nextInt() {
		try {
			st.nextToken();
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		return (int)st.nval;
	}
}

前面是啊金都正常,就最后一个点,超时,怀疑超长数据,都是一个值

2023/2/8 10:29
加载中...