2019.4.23美团第1题ac 100%

就剩下15分钟了也做不了下一题就提前交卷拉倒
保留了一些调试信息,类名按照我刷题的习惯美团第一题就叫MeiTuanQ1

import java.util.*;
import java.util.Map.Entry;
public class MeiTuanQ1 {
public int modifyMatrix(int[][]matrix) {
    int countOdd=0,countEven=0;
    HashMap<Integer,Integer>oddMap=new HashMap<Integer,Integer>();
    HashMap<Integer,Integer>evenMap=new HashMap<Integer,Integer>();
    int n=matrix.length,m=matrix[0].length;
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++) {
            if((i-j)%2!=0) {
                countOdd++;
                if(!oddMap.containsKey(matrix[i][j]))
                    oddMap.put(matrix[i][j],1);
                else oddMap.put(matrix[i][j],oddMap.get(matrix[i][j])+1);
                
            }
            else {
                countEven++;
                if(!evenMap.containsKey(matrix[i][j]))
                    evenMap.put(matrix[i][j],1);
                else evenMap.put(matrix[i][j],evenMap.get(matrix[i][j])+1);
            }
        }
    List<Map.Entry<Integer,Integer>> list1 = new ArrayList<Map.Entry<Integer,Integer>>
    (oddMap.entrySet());
    Collections.sort(list1,new Comparator<Map.Entry<Integer,Integer>>() {  public int compare(Entry<Integer, Integer> o1,
                Entry<Integer, Integer> o2) {
            return o1.getValue().compareTo(o2.getValue());
        }
        
    });
    
    //for(Map.Entry<Integer,Integer> mapping:list1){ 
        //System.out.println(mapping.getKey()+":"+mapping.getValue());    } 
    List<Map.Entry<Integer,Integer>> list2 = new ArrayList<Map.Entry<Integer,Integer>>
    (evenMap.entrySet());
    Collections.sort(list2,new Comparator<Map.Entry<Integer,Integer>>() {  public int compare(Entry<Integer, Integer> o1,
                Entry<Integer, Integer> o2) {
            return o1.getValue().compareTo(o2.getValue());
        }
        
    });
        int oddMax=list1.get(list1.size()-1).getValue();
        int evenMax=list2.get(list2.size()-1).getValue();
        int countOddMax=1;
        int countEvenMax=1;
        for(int i=list1.size()-2;i>=0;i--)
            if(list1.get(i).getValue()!=oddMax){
                countOddMax=list1.size()-1-i;
                break;
            }
        for(int i=list2.size()-2;i>=0;i--)
            if(list2.get(i).getValue()!=evenMax){
                countEvenMax=list2.size()-1-i;
                break;
            }
        
        if(countOddMax==1&&countEvenMax==1&&
                list1.get(list1.size()-1).getKey()==list2.get(list2.size()-1).getKey()
                )
            return Math.min(evenMax, oddMax);
        else 
            return (countEven-evenMax+countOdd-oddMax);
        
        
        
        
}
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[][]matrix= {
                {1,2,1},{1,3,1},{1,1,1}
        };
        System.out.print(new MeiTuanQ1().modifyMatrix(matrix));
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt(),m=sc.nextInt();
        int[][]matrix1=new int[n][m];
                for(int i=0;i<n;i++)
                    for(int j=0;j<m;j++)
                        matrix1[i][j]=sc.nextInt();
        int ans=new MeiTuanQ1().modifyMatrix(matrix);
        System.out.print(ans);
    }
}


#笔试题目##Java##春招#
全部评论
666 我python 一行代码,ac了27% print(int(input().split()[0])+1)
点赞 回复 分享
发布于 2019-04-23 21:21
北大的神仙
点赞 回复 分享
发布于 2019-04-23 21:13
最后两个for 循环啥意思啊,求大佬解释下🤣,菜鸡看不懂
点赞 回复 分享
发布于 2019-04-23 22:25
方法差不多
点赞 回复 分享
发布于 2019-04-23 21:32
神仙
点赞 回复 分享
发布于 2019-04-23 21:19
神仙
点赞 回复 分享
发布于 2019-04-23 21:17
神仙
点赞 回复 分享
发布于 2019-04-23 21:14
代码和我出奇的一致 就变量不一样😂
点赞 回复 分享
发布于 2019-04-23 21:14
神仙
点赞 回复 分享
发布于 2019-04-23 21:13

相关推荐

佛系的本杰明反对画饼:个人看法,实习经历那段是败笔,可以删掉,它和你目标岗位没什么关系,没有用到什么专业技能,甚至会降低你项目经历内容的可信度。个人技能那里可以再多写一点,去boss直聘上看别人写的岗位要求,可以把你会的整合一下,比如熟悉常规的开关电源拓扑结构(BUCK、正激、反激、LLC等),熟悉常用的通信总线协议和通信接口,如UART,IIC,SPI等。简历首先是HR看的,HR大多不懂技术,会从简历里去找关键字,你没有那些关键字他可能就把你筛掉了,所以个人技能尽量针对着岗位描述写一下。还有电赛获佳绩,获奖了就写什么奖,没获奖就把获佳绩删了吧,要不会让人感觉夸大。
点赞 评论 收藏
分享
评论
点赞
26
分享

创作者周榜

更多
牛客网
牛客企业服务