总共三个题:
如下:
第一题:
package test.com;
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
{
int k = sc.nextInt();
int n = sc.nextInt();
int[] arry = new int[n];
for(int i=0;i<n;i++)
{
arry[i]=sc.nextInt();
}
Arrays.sort(arry);
if(k<arry[0])
System.out.println(-1);
else if(k>arry[arry.length-1])
System.out.println(-1-arry.length);
else
{
int flag = binary(arry,k,0,arry.length);
if(flag !=-1)
System.out.println(flag);
else
{
int[] w = new int[n+1];
for(int i=0;i<arry.length;i++)
{
w[i]=arry[i];
}
w[n]=k;
Arrays.sort(w);
flag = binary(w,k,0,w.length);
System.out.println(-1-flag);
}
}
}
}
public static int binary(int[] a, int key,int begin,int end)
{
while(begin<=end)
{
int mid =(begin+end)/2;
if(a[mid]==key)
return mid;
if(a[mid]>key)
end = mid-1;
if(a[mid]<key)
begin=mid+1;
}
return -1;
}
}
第二题:
package test.com;
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
{
String str = sc.nextLine();
String[] s = str.split(",");
int[] arry = new int[s.length];
for(int i=0;i<arry.length;i++)
{
arry[i]=Integer.valueOf(s[i]);
}
System.out.println(compute(arry));
}
}
public static int compute(int[] a)
{
int[] w = new int[a.length];
int max=0;
for(int i=0;i<a.length-1;i++)
{
max=0;
for(int j=i+1;j<a.length;j++)
{
int m = a[j]-a[i];
if(m>max)
max=m;
}
w[i]=max;
}
w[w.length-1]=0;
Arrays.sort(w);
return w[w.length-1];
}
}
第三题就是一个最小生成树的题,但是没时间做了好气。