京东笔试:100%,27%
第一题合唱团身高分组,第二个用例给的很有迷惑性,我看了很久才发现69079936 236011312 77957850 653604087 443890802 277126428 755625552 768751840 993860213 882053548
这个用例,69079936 236011312 77957850排序后是 69079936 77957850 236011312 ,236011312 是9位数。。。。。
然后就可以AC了:
import java.util.*;
/**
* @author :week
* @date :Created in 2019-08-24 18:48
* @description:
* @modified By:
* @version: 1.0.0
*/
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
int[] H=new int[N];
int[] tmp=new int[N];
for(int i=0;i<N;i++){
H[i]=sc.nextInt();
tmp[i]=H[i];
}
Arrays.sort(tmp);
Map<Integer,Integer> map =new HashMap<Integer,Integer>();
int count=0;
for(int i=0;i<N;i++){
int a=H[i];
int b=tmp[i];
if(map.containsKey(a)){
map.put(a,map.get(a)+1);
}else{
map.put(a,1);
}
if(map.containsKey(b)){
map.put(b,map.get(b)-1);
}else{
map.put(b,-1);
}
if(map.containsKey(a)&&map.get(a)==0){
map.remove(a);
}
if(map.containsKey(b)&&map.get(b)==0){
map.remove(b);
}
if(map.size()==0){
count++;
}
}
System.out.println(count);
}
} 第二题:不知道字典序怎么贪。。来回倒腾,永远27%。。 import java.util.*;
/**
* @author :week
* @date :Created in 2019-08-24 18:49
* @description:
* @modified By:
* @version: 1.0.0
*/
public class Main {
private static boolean[][] grah;
private static int[] boycount;
private static int[] grilcount;
private static int n;
private static int m;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
m=sc.nextInt();
grah=new boolean[n][n];
boycount =new int[n];
grilcount=new int[n];
for(int i=0;i<m;i++){
int x=sc.nextInt();
int y=sc.nextInt();
int min=Math.min(x,y);
int max=Math.max(x,y);
x=min-1;
y=max-n-1;
boycount[x]++;
grilcount[y]++;
grah[x][y]=grah[y][x]=true;
}
int[] L=findMax(boycount);
int[] R=findMax(grilcount);
int count=0;
List<Integer> res=new ArrayList<Integer>();
while(true){
if(L[0]==-1&&R[0]==-1){
break;
}
count++;
if(L[1]>=R[1]){
deleteNode(L[0],true);
res.add(L[0]+1);
}else{
deleteNode(R[0],false);
res.add(R[0]+1+n);
}
L=findMax(boycount);
R=findMax(grilcount);
}
System.out.println(count);
Collections.sort(res, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int t1=o1;
int t2=o2;
while(t1>10){
t1=t1/10;
}
while(t2>10){
t2=t2/10;
}
return t1-t2;
}
});
for(int i=0;i<res.size();i++){
System.out.println(res.get(i));
}
}
public static void deleteNode(int index,boolean tag){
if(tag){
boycount[index]=0;
for(int i=0;i<n;i++){
if(grah[index][i]){
grah[index][i]=false;
grilcount[i]--;
}
}
}else{
grilcount[index]=0;
for(int i=0;i<n;i++){
if(grah[i][index]){
grah[i][index]=false;
boycount[i]--;
}
}
}
}
public static int[] findMax(int[] num){
int max=0;
int index=-1;
for(int i=0;i<num.length;i++){
if(num[i]>max){
max=num[i];
index=i;
}
}
return new int[]{index,max};
}
} 