近期论坛无法登录的解决方案


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

一亩三分地官方iOS手机应用下载
查看: 2260|回复: 5
收起左侧

SNAPCHAT PHONE

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

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

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
一幅画给你一个点和一个要填的颜色, 把周围相同颜色的都变成这个颜色。没想好写成了DFS, 后来想想应该按BFS写。 还问了一些工作的project.
. From 1point 3acres bbs
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 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
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<>();
                   if(x>=0&&x<m&&y>=0&&y<n&&!image[y].equals(fillColor))
                     queue.offer(new Point(x, y, fillColor));. Waral 鍗氬鏈夋洿澶氭枃绔,
                  
                   while(!queue.isEmpty())
. more info on 1point3acres.com                   {
                       Point point = queue.poll();
                       image[point.x][point.y]=fillColor;
                       for(int[] dir: dirs)
                       {. visit 1point3acres.com for more.
                               int i= point.x+dir[0];
                               int j= point.y+dir[1];
                               if(i>=0&&i<m&&j>=0&&j<n&&!image[i][j].equals(fillColor))
                               {
                                       queue.offer(new Point(i, j, fillColor));
                               }
                       }
                   }
                }

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

freemail165 发表于 2016-12-12 15:53:30 | 显示全部楼层
难道不是颜色与期待不符的才涂。。。
回复 支持 反对

使用道具 举报

jyty 发表于 2017-1-4 06:15:17 | 显示全部楼层
题目是说,把[x,y]周围和color[x][y]的颜色相同的格子都填充成fillColor吗?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-6-26 16:54

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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