一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1255|回复: 3
收起左侧

SNAPCHAT PHONE

[复制链接] |试试Instant~ |关注本帖
caseinter 发表于 2016-10-11 06:23:01 | 显示全部楼层 |阅读模式

2016(10-12月) 码农类 硕士 全职@Snapchat - 网上海投 - 技术电面 |Fail在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
一幅画给你一个点和一个要填的颜色, 把周围相同颜色的都变成这个颜色。没想好写成了DFS, 后来想想应该按BFS写。 还问了一些工作的project.

public static class Point{
                int x;
                int y;
                Color color;
               
                public Point(int x,int y, Color color)
                {
                        this.x=x;
                        this.y=y;
                        this.color=color;
                }
        }
       
        void floodFill(Color[][] image, int x, int y, Color fillColor) {
                   if(image==null||image.length==0)
                     return;
                   int m = image.length;
                   int n= image[0].length;
                   int[][] dirs = {{1,0},{-1,0},{0,1},{0,-1},{-1,-1},{-1,1},{1,1},{1,-1}};
                  
                   Queue<Point> queue = new LinkedList<>();
                   queue.offer(new Point(x, y, fillColor));
                  
                   while(!queue.isEmpty())
                   {
                       Point point = queue.poll();
                       image[point.x][point.y]=fillColor;
                       for(int[] dir: dirs)
                       {
                               int i= point.x+dir[0];
                               int j= point.y+dir[1];
                               if(i>=0&&i<m&&j>=0&&j<n&&!image[j].equals(fillColor))
                               {
                                       queue.offer(new Point(i, j, fillColor));
                               }
                       }
                   }

                }

评分

1

查看全部评分

本帖被以下淘专辑推荐:

 楼主| caseinter 发表于 2016-10-11 06:25:33 | 显示全部楼层
void floodFill(Color[][] image, int x, int y, Color fillColor) {
                   if(image==null||image.length==0)-google 1point3acres
                     return;.鏈枃鍘熷垱鑷1point3acres璁哄潧
                   int m = image.length;
                   int n= image[0].length;-google 1point3acres
                   int[][] dirs = {{1,0},{-1,0},{0,1},{0,-1},{-1,-1},{-1,1},{1,1},{1,-1}};
                  
                   Queue<Point> queue = new LinkedList<>();
                   if(x>=0&&x<m&&y>=0&&y<n&&!image[y].equals(fillColor))
                     queue.offer(new Point(x, y, fillColor));
                  
                   while(!queue.isEmpty())
                   {
                       Point point = queue.poll();
                       image[point.x][point.y]=fillColor;
                       for(int[] dir: dirs)
                       {.1point3acres缃
                               int i= point.x+dir[0];. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
                               int j= point.y+dir[1];
. 鍥磋鎴戜滑@1point 3 acres                               if(i>=0&&i<m&&j>=0&&j<n&&!image[i][j].equals(fillColor))
                               {
                                       queue.offer(new Point(i, j, fillColor));
                               }
                       }. 1point3acres.com/bbs
                   }.鐣欏璁哄潧-涓浜-涓夊垎鍦
                }

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

fengyanglang 发表于 2016-10-11 12:46:51 | 显示全部楼层
我想了一下。DFS正确实现的话,也不会错呀。有反例吗?
回复 支持 反对

使用道具 举报

linweihua0 发表于 2016-10-18 09:42:48 | 显示全部楼层
楼主的代码好像有问题 应该是判断是否和image(i,j)的Color一样 来加入queue。
还有DFS其实也能正确实现的。
PS 这个是八个方向?
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-9 06:08

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表