• 661. Image Smoother


    Given a 2D integer matrix M representing the gray scale of an image, you need to design a smoother to make the gray scale of each cell becomes the average gray scale (rounding down) of all the 8 surrounding cells and itself. If a cell has less than 8 surrounding cells, then use as many as you can.

    Example 1:

    Input:
    [[1,1,1],
     [1,0,1],
     [1,1,1]]
    Output:
    [[0, 0, 0],
     [0, 0, 0],
     [0, 0, 0]]
    Explanation:
    For the point (0,0), (0,2), (2,0), (2,2): floor(3/4) = floor(0.75) = 0
    For the point (0,1), (1,0), (1,2), (2,1): floor(5/6) = floor(0.83333333) = 0
    For the point (1,1): floor(8/9) = floor(0.88888889) = 0

    C++(173ms):
     1 class Solution {
     2 public:
     3     vector<vector<int>> imageSmoother(vector<vector<int>>& M) {
     4         int n = M.size() ; 
     5         int m = M[0].size();
     6         if (n == 0 || m == 0)
     7             return vector<vector<int>>() ;
     8         vector<vector<int>> dirs = {{0,1},{0,-1},{1,0},{-1,0},{-1,-1},{1,1},{-1,1},{1,-1}};
     9         vector<vector<int>> res(n) ;
    10         for(int i = 0 ; i < n ; i++){
    11             for (int j = 0 ; j < m ; j++){
    12                 res[i].resize(m) ;
    13                 int sum = M[i][j] ;
    14                 int cnt = 1 ;
    15                 for(int k = 0 ; k < 8 ; k++){
    16                     int x = i + dirs[k][0] ;
    17                     int y = j + dirs[k][1] ;
    18                     if (x < 0 || x > n-1 || y < 0 || y > m-1)
    19                         continue ;
    20                     sum += M[x][y] ;
    21                     cnt++ ;
    22                 }
    23                 res[i][j] = sum/cnt ;
    24             }
    25         }
    26         return res ;
    27     }
    28 };

     或者   vector<vector<int>> res(n , vector<int>(m,0)) ;

  • 相关阅读:
    JQuery源码解析(十一)
    Oracle帮助类
    JQuery正则验证
    MVC的过滤器
    JQuery源码解析(十)
    JavaScript封装的几种方式
    ps小技巧
    Fragment 的用法小技巧
    onCreateOptionsMenu 和 onPrepareOptionsMenu 的区别
    Axure 注册码
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/7654665.html
Copyright © 2020-2023  润新知