京东赛格网第一题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;(整体思路参照快速排序的单边循环法)
第二题思路,很像一个拓扑排序,但其实不是,比拓扑排序结构简单,大概能想到的就是先把男女关系存到一个数组里面,然后对关系条数做一个从大到小排序,再每次由高到底清除关系条数,直至结束,并输出。这个代码没写,还在想数据该怎么存。
#京东##笔试题目#