一亩三分地论坛

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

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

新鲜电面出炉,不难,但是我感觉悬了

[复制链接] |试试Instant~ |关注本帖
AnastasiaHan 发表于 2015-10-6 07:09:52 | 显示全部楼层 |阅读模式

2015(10-12月) 码农类 硕士 全职@Snapchat - 猎头 - 技术电面 |Other在职跳槽

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

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

x
// This is the text editor interface.
// Anything you type or change here will be seen by the other person in real time.

/*
Consider a grid where all the points are represented by integers.

.........................................
...(-2,2)  (-1,2)  (0,2)  (1,2)  (2,2)...
...(-2,1)  (-1,1)  (0,1)  (1,1)  (2,1).... more info on 1point3acres.com
...(-2,0)  (-1,0)  (0,0)  (1,0)  (2,0)...
. more info on 1point3acres.com...(-2,-1) (-1,-1) (0,-1) (1,-1) (2,-1)...
...(-2,-2) (-1,-2) (0,-2) (1,-2) (2,-2)...
..........................................

k-Snap point: A point whose digits sum up to less than or equal to k. In this
question, we ignore all the signs in the number.  For exxample, (1, 0) is a 1-snap point, (0, 10) is a 1-snap point, and (-100, 0) is also a 1-snap point; however (11, 0) is not a 1-snap point.

Question 1: Implement the following function
boolean isSnapPoint(Point p, int k)

Returns true if p is a k-snap point, and false otherwise.

Reachable k-snap point: A k-snap point is a reachable k-snap point if there is a path from (0,0) to that point, where the path only consists of k-snap points.

Question 2: Given k, return all the reachable k-snap points.
*/


评分

3

查看全部评分

哈哈哈大雄 发表于 2015-10-6 10:25:42 | 显示全部楼层
        分享一个答案
        public boolean  isSnapPoint(Point p, int k) {
                int x = Math.abs(p.x);. From 1point 3acres bbs
                int y = Math.abs(p.y);
                int val = 0;
                while (x > 0) {
                        val += x % 10;
                        x /= 10;
                }
                while (y > 0) {
                        val += y % 10;
                        y /= 10;
                }
                return val <= k;
        }
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
        public HashSet<Point> ReachableKSnapPoint(int k) {
                HashSet<Point> points = new HashSet<Point>();
                if (k < 0) return points;
                helper(new Point(0, 0), k, points);
                return points;
        }
       
        public void helper(Point point, int k, HashSet<Point> points) {
                if(!isSnapPoint(point, k)) return;
                points.add(point);
                Point left = new Point(point.x - 1, point.y);
                if (!points.contains(left)) helper(left, k, points);
                Point right = new Point(point.x + 1, point.y);
                if (!points.contains(right)) helper(right, k, points);
                Point upper = new Point(point.x, point.y + 1);
                if (!points.contains(upper)) helper(upper, k, points);
                Point lower = new Point(point.x, point.y - 1);
                if (!points.contains(lower)) helper(lower, k, points);
        }
. visit 1point3acres.com for more.       
        public class Point {
                public int x, y;
                public Point(int x, int y) {
                        this.x = x;
                        this.y = y;
                }
               
                public boolean equals(Object point) {. 1point 3acres 璁哄潧
                if (!(point instanceof Point)) {
                    return false;
                }
                        Point p = (Point) point;
                        return this.x == p.x && this.y == p.y;
                }
                鏉ユ簮涓浜.涓夊垎鍦拌鍧.
                public int hashCode() {
                     return (x + " " + y).hashCode();
                }. 1point 3acres 璁哄潧
        }
回复 支持 3 反对 0

使用道具 举报

kelvinzhong 发表于 2015-10-6 07:22:31 | 显示全部楼层
这个是坐标系? 如果只能consist of k-snap, (0,0)本身就是 0-snap, 不就k只能等于0了吗?
回复 支持 反对

使用道具 举报

raymond12365 发表于 2015-10-23 09:08:03 | 显示全部楼层
kelvinzhong 发表于 2015-10-6 07:22
这个是坐标系? 如果只能consist of k-snap, (0,0)本身就是 0-snap, 不就k只能等于0了吗?

k只是一个上限而已,只要小于等于k就好,不一定要大于k
回复 支持 反对

使用道具 举报

bobzhang2004 发表于 2015-11-13 10:24:12 | 显示全部楼层
楼主DFS的时候忘了设置边界了吧?
回复 支持 反对

使用道具 举报

liurudahai 发表于 2016-11-4 12:51:20 | 显示全部楼层
bobzhang2004 发表于 2015-11-13 10:24
楼主DFS的时候忘了设置边界了吧?

看原题似乎是没有边界的
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-4 12:25

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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