京东赛格网第一题AC,第二题有思路但是没时间了,欢迎讨论
public static void test1() {
Scanner sc =new Scanner(System.in);
int n= sc.nextInt();
int a[] =new int[n];
for(int i=0;i<n;i++) {
a[i] = sc.nextInt();
}
if(n==1)
System.out.println(1);
int max =a[0];
int count =1;
int j=0;
for(int i=1;i<n;i++) {
if(a[i]>=max) {
for(j=i+1;j<n;j++) {
if(a[j]<max) {
break;
}
}
if(j==n) {
count++;
}
max=a[i];
}
}
System.out.println(count);
} 第一题思路,就是顺序扫描,取a[0]作为参考值,从下标1开始遍历,如果a[i]都比当前参考值小,肯定需要和当前参考值分到一组,直接跳过。如果a[i]比当前参考值大,则重当前位置向后面遍历,如果i后面的数都比参考值大,则计数count+1,然后更新当前最大值。直至结束,输出count;(整体思路参照快速排序的单边循环法)
第二题思路,很像一个拓扑排序,但其实不是,比拓扑排序结构简单,大概能想到的就是先把男女关系存到一个数组里面,然后对关系条数做一个从大到小排序,再每次由高到底清除关系条数,直至结束,并输出。这个代码没写,还在想数据该怎么存。
#京东##笔试题目#
巨人网络成长空间 50人发布
查看4道真题和解析