


class Solution {
public:
int leastBricks(vector<vector<int>>& wall) {
unordered_map<int,int> un_map;
if(wall.size()==0)
return 0;
for(int i = 0; i < wall.size(); i++){
int sum = 0;
int n = wall[i].size();
for(int j = 0; j < n-1; j++){ // n-1 取出墙边
sum = sum + wall[i][j];
un_map[sum]++; // hash表,判断那些在同一条直线上
}
}
int maxval = 0;
for(auto it = un_map.begin(); it!=un_map.end(); it++){
//cout<<"it->second:"<<" "<<it->first<<" "<<it->second<<endl;
maxval = max(it->second, maxval); // 找出在同一条直线上最多的个数
}
return wall.size()-maxval; // 墙高减去maxval即为结果。
}
};