__661图片平滑器__检查九个位置的合理性

__661图片平滑器__检查九个位置的合理性

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 官方题解:
  • 参考代码:

原题链接:

__661图片平滑器__检查九个位置的合理性
https://leetcode-cn.com/problems/image-smoother/

完成情况:

__661图片平滑器__检查九个位置的合理性_第1张图片

解题思路:

就是简单粗暴的模拟,但是很奇怪,为啥读取不了元素值。

为啥错了啊 ,这个,离离原上谱= =~

官方题解:

__661图片平滑器__检查九个位置的合理性_第2张图片

package 西湖算法题解;

public class __661图片平滑器__官方题解 {
	public static void main(String[] args) {

	}

	public int[][] imageSmoother(int[][] img){
		//其中m表示行,n代表列
		int m = img.length,n = img[0].length;
		int [][]  res = new int[m][n];
		for (int i=0;i<m;i++){
			for (int j=0;j<n;j++){
				int num = 0,sum = 0;
				for (int x = i-1;x<=i+1;x++){
					for (int y=j-1;y<=j+1;y++){
						if (x>=0 && x<m && y>=0 && y<n){
							num++;
							sum +=img[x][y];
						}
					}
				}
			res[i][j] = sum/num;
			}//for (int j=0;j
		}
		return res;
	}


}

参考代码:

package 西湖算法题解;

import java.util.Arrays;

public class __661图片平滑器__检查九个位置的合理性  {
	public static void main(String[] args) {
		int img[][] =  new int [][]{{100,200,100},{200,50,200},{100,200,100}};
		imageSmoother(img);
	}

	public static int[][] imageSmoother(int[][] img) {
		int helper[][] = new int[img[0].length][img.length];
		//图像平滑器 是大小为 3 x 3 的过滤器
		for (int i=0;i<img[0].length;i++){
			//先取行--------------------------------------------
			for (int j=0;j<img.length;j++){
				//再取列----------------------------------------
				System.out.println("当前取得是:"+img[i][j]);
				helper[i][j] = CountImage(img,i,j);
				System.out.println(helper[i][j]);
				System.out.println("-------------------------------------------------");
			}
		}
		for (int i=0;i<img[0].length;i++) {
			//先取行--------------------------------------------
			for (int j = 0; j < img.length; j++) {
				System.out.print(helper[i][j]+" ");
			}
			System.out.println();
		}
		System.out.println(Arrays.toString(helper));
		return helper;
	}

	private static int CountImage(int[][] img, int i, int j) {
		int res = 0;
		//左上
		if (i-1>=0 && j-1 >=0){
			System.out.println("arr[i][j]: "+img[i-1][j-1]);
			res+=img[i-1][j-1];
		}
		//中上
		if (i-1>=0 ){
			res+=img[i-1][j];
			System.out.println("arr[i][j]: "+img[i-1][j]);
		}
		//右上
		if (i-1>=0  && j+1 < img[0].length){
			res+=img[i-1][j+1];
			System.out.println("arr[i][j]: "+img[i-1][j+1]);
		}
		//左
		if (j-1>=0 ){
			res+=img[i][j-1];
			System.out.println("arr[i][j]: "+img[i][j-1]);
		}
		//中
		res+=img[i][j];
		System.out.println("arr[i][j]: "+img[i][j]);
		//右
		if (j+1 < img[0].length){
			res+=img[i][j+1];
			System.out.println("arr[i][j]: "+img[i][j+1]);
		}
		//左下
		if (i+1 < img.length&&  j-1 >=0){
			res+=img[i+1][j-1];
			System.out.println("arr[i][j]: "+img[i+1][j-1]);
		}
		//中下
		if (i+1 < img.length ){
			res+=img[i+1][j];
			System.out.println("arr[i][j]: "+img[i+1][j]);
		}
		//右下
		if (i+1 < img.length && j+1 < img[0].length){
			res+=img[i+1][j+1];
			System.out.println("arr[i][j]: "+img[i+1][j+1]);
		}
		res/=9;
		System.out.println(res);
		return res;
	}


}

你可能感兴趣的:(#,LeetCode题解,java学习,java,算法,开发语言)