LeetCode 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

 

Note:

  1. The value in the given matrix is in the range of [0, 255].
  2. The length and width of the given matrix are in the range of [1, 150].

 

 


 

題目標簽:Array

  題目給了我們一個2d M array,讓我們平滑處理圖片。對於每一個cell,把它更新為 以自身為中心 3x3 的平均值。

  就用常規方法做,新設一個 res[][] array,遍歷M,對於每一個cell, 遍歷以它為中心的3x3的cells,得到平均值,存入res。

  需要注意的就是,3x3的邊界問題。

 

 

Java Solution:

Runtime beats 72.97% 

完成日期:10/19/2017

關鍵詞:Array

關鍵點:處理3x3的邊界問題

 1 class Solution 
 2 {
 3     public int[][] imageSmoother(int[][] M) 
 4     {
 5         int rows = M.length;
 6         int cols = M[0].length;
 7         int[][] res = new int[rows][cols];
 8         
 9         for(int i=0; i<rows; i++)
10         {
11             for(int j=0; j<cols; j++)
12             {
13                 int sum = 0;
14                 int count = 0;
15                 // sum 3x3 area and take care of the boundary
16                 for(int x=Math.max(0,i-1); x<=Math.min(rows-1, i+1); x++)
17                 {
18                     for(int y=Math.max(0, j-1); y<=Math.min(cols-1, j+1); y++)
19                     {
20                         sum += M[x][y]; // sum up cells value
21                         count++; // count cells number
22                     }
23                 }
24                 
25                 res[i][j] = sum / count; // get average value
26             }
27         }
28         
29         return res;
30     }
31 }

參考資料:N/A

 

LeetCode 題目列表 - LeetCode Questions List

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM