zoukankan      html  css  js  c++  java
  • 算法93---修改矩阵

    一、题目:修改矩阵(美团2019春招实习笔试)

    思路:采用两个矩阵存储这两个不同的数字

    代码:

    from collections import Counter
    
    n, m = input().split()
    n, m = int(n), int(m)
    arr = []
    for i in range(n):
        arr.append(list(map(int, input().split())))
    
    
    def bwMatrix(arr, n, m):
        res = 0
        one, two = [], []
        for i in range(n):
            for j in range(m):
                if (i + j) & 1:
                    one.append(arr[i][j])
                else:
                    two.append(arr[i][j])
        dicone = Counter(one)
        dictwo = Counter(two)
        sort_one = sorted(dicone.items(), key=lambda x: x[1], reverse=True)
        sort_two = sorted(dictwo.items(), key=lambda x: x[1], reverse=True)
        
        sort_one.append([float('inf'),0])
        sort_two.append([-float('inf'),0])
        ##如果one中最多的数和two中最多的数不等
        if sort_one[0][0] != sort_two[0][0]:
            return (len(one) - sort_one[0][1]) + (len(two) - sort_two[0][1])
        ##如果相等,分三种情况,最多数的个数不等(one多、two多),最多数的个数相等(比较第二多数的个数大小)。
        else:
            if sort_one[0][1] > sort_two[0][1]:
                return (len(two) - sort_two[1][1]) + (len(one) - sort_one[0][1])
            elif sort_one[0][1] < sort_two[0][1]:
                return (len(one) - sort_one[1][1]) + (len(two) - sort_two[0][1])
            else:
                if sort_one[1][1] >= sort_two[1][1]:
                    return (len(two) - sort_two[0][1]) + (len(one) - sort_one[1][1])
                else:
                    return (len(two) - sort_two[1][1]) + (len(one) - sort_one[0][1])
    
    
    print(bwMatrix(arr, n, m))
    # 3 3
    # 1 1 1
    # 1 5 1
    # 1 1 1
  • 相关阅读:
    坦克大战
    java多线程应用场景
    java中的多线程(资料)
    设置线程名
    线程名称的设置及取得
    java调试
    文件上传细节处理
    Servlet生命周期
    java的动态绑定与静态绑定
    Mysql 连接池调用完成后close代理方法引出的设计模式
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/10760424.html
Copyright © 2011-2022 走看看