leetcode-华为专题-554. 砖墙

 

 

 

 

 

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即为结果。

    }
};

 

posted @ 2021-08-13 20:13  三一一一317  阅读(54)  评论(0)    收藏  举报