AcWing 757. 修改矩阵
原题链接
简单
作者:
莫里Mori
,
2021-04-05 15:25:31
,
所有人可见
,
阅读 318
import java.util.*;
public class Main{
static HashMap<Integer, Integer> map1 = new HashMap<>();
static HashMap<Integer, Integer> map2 = new HashMap<>();
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
for(int i = 0; i < n; i ++){
for(int j = 0; j < m; j ++){
int t = sc.nextInt();
if((i + j) % 2 == 0){
if(map1.containsKey(t)){
map1.put(t, map1.get(t) + 1);
}
else{
map1.put(t, 1);
}
}
else{
if(map2.containsKey(t)){
map2.put(t, map2.get(t) + 1);
}
else{
map2.put(t, 1);
}
}
}
}
ArrayList<Map.Entry<Integer, Integer>> l1 = new ArrayList<>(map1.entrySet());
ArrayList<Map.Entry<Integer, Integer>> l2 = new ArrayList<>(map2.entrySet());
l1.sort((a, b) -> b.getValue() - a.getValue());
l2.sort((a, b) -> b.getValue() - a.getValue());
int res = 0;
for(int i = 0; i < 2 && i < l1.size(); i ++){
for(int j = 0; j < 2 && j < l2.size(); j ++){
if(l1.get(i).getKey() == l2.get(j).getKey()){
res = Math.max(res, Math.max(l1.get(i).getValue(), l2.get(j).getValue()));
}
else{
res = Math.max(res, l1.get(i).getValue() + l2.get(j).getValue());
}
}
}
if(l1.isEmpty()) res = l2.get(0).getValue();
if(l2.isEmpty()) res = l1.get(0).getValue();
System.out.println(n * m - res);
}
}