楼主: 304671127
跳转到指定楼层
上一主题 下一主题
收起左侧

snapchat电面gg

🔗
waikai 2016-8-6 13:32:53 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
csushin1992 2016-8-6 13:37:46 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
csushin1992 2016-8-6 13:41:10 | 只看该作者
全局:
waikai 发表于 2016-8-6 13:32
好像有问题,第二个“//mark them as visited grids.”那里,可能标记慢了。你col = 0的时候是放进Queue ...

对的~!
8字符8字符。
回复

使用道具 举报

🔗
chenzhan171 2016-8-6 13:50:55 | 只看该作者
全局:
最基本的bfs, 时间效率和dp一样。
回复

使用道具 举报

🔗
waikai 2016-8-6 14:02:46 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
lvvvvv 2016-8-6 22:40:57 | 只看该作者
全局:
csushin1992 发表于 2016-8-6 13:10
既然题目说了是从最左边的任何一点到最右边的任何一点,我想只需要搜索上、下、右三个方向了吧?

完全有可能 Z 字型才能走到啊
回复

使用道具 举报

🔗
 楼主| 304671127 2016-8-6 23:55:40 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
何打发123 2016-8-7 03:51:19 | 只看该作者
全局:
感谢楼主分享~ 写了一个求大家指正~
  1. import java.util.*;

  2. class Solution {
  3.         //1 是路 0 是墙
  4.         int res = Integer.MAX_VALUE;
  5.         public int minStep(int[][] matrix){
  6.                 if(matrix == null || matrix.length == 0) return 0;
  7.                 int row = matrix.length, col = matrix[0].length;
  8.                
  9.                 for(int i = 0; i < row; i++){
  10.                         dfs(i, 0, matrix);
  11.                 }
  12.                 if(res == Integer.MAX_VALUE) return -1;
  13.                 else return res;
  14.         }
  15.        
  16.         private void dfs(int x, int y, int[][] matrix){
  17.                 int row = matrix.length, col = matrix[0].length;
  18.                 int[][] dp = new int[row][col];
  19.                 for(int i = 0; i < row; i++){
  20.                         Arrays.fill(dp[i], Integer.MAX_VALUE);
  21.                 }
  22.                
  23.                 boolean[][] visited = new boolean[row][col];
  24.                 helper(x, y, matrix, dp, visited, 0);
  25.         }
  26.        
  27.         private void helper(int x, int y, int[][] matrix, int[][] dp, boolean[][] visited, int step){
  28.                 int row = matrix.length, col = matrix[0].length;
  29.                 if(x < 0 || x >= row || y < 0 || y >= col || matrix[x][y] == 0 || visited[x][y]) return;
  30.                 if(step >= dp[x][y]) return;
  31.                
  32.                 dp[x][y] = step;
  33.                 visited[x][y] = true;
  34.                
  35.                 if(y == col - 1){
  36.                         res = Math.min(res, dp[x][y]);
  37.                         visited[x][y] = false;
  38.                         return;
  39.                 }
  40.                
  41.                 int[] surroundX = {-1, 1, 0, 0};
  42.                 int[] surroundY = {0, 0, -1, 1};
  43.                 for(int i = 0; i < 4; i++){
  44.                         int nx = x + surroundX[i];
  45.                         int ny = y + surroundY[i];
  46.                         helper(nx, ny, matrix, dp, visited, dp[x][y] + 1);
  47.                 }
  48.                 visited[x][y] = false;
  49.         }
  50.        
  51.        
  52.         public static void main(String[] args) {
  53.                 Solution r = new Solution();
  54.                 int[][] matrix =
  55.                 {{0,1,1,1,1,0},
  56.                  {1,1,0,0,1,0},
  57.                  {1,1,0,1,1,0},
  58.                  {0,1,0,1,0,0},
  59.                  {0,1,0,1,1,1}};
  60.                
  61.                 int res = r.minStep(matrix);
  62.                 System.out.println(res);
  63.         }
  64. }
复制代码
回复

使用道具 举报

🔗
importcoder 2016-9-13 02:32:09 | 只看该作者
全局:
感谢楼主分享,用bfs撸了一遍,函数的参数分别是棋盘,起点的坐标,终点的坐标
  1. public class ShortestStep {
  2.    
  3.     public int shortestPath(int[][] board, int i, int j, int p, int q) {
  4.         
  5.         if (board[i][j] == 0 || board[p][q] == 0) {
  6.             return -1;
  7.         }
  8.         
  9.         int m = board.length;
  10.         int n = board[0].length;
  11.         Queue<Integer> queue = new LinkedList<>();
  12.         Map<Integer, Integer> map = new HashMap<>();
  13.         queue.offer(i * n + j);
  14.         map.put(i * n + j, 0);
  15.         while (!queue.isEmpty()) {
  16.             int cur = queue.poll();
  17.             int step = map.get(cur);
  18.             int x = cur / n;
  19.             int y = cur % n;
  20.             if (x == p && y == q) {
  21.                 return step;
  22.             }
  23.             
  24.             if (x > 0 && board[x - 1][y] == 1 && !map.containsKey((x - 1) * n + y)) {
  25.                 map.put((x - 1) * n + y, step + 1);
  26.                 queue.offer((x - 1) * n + y);
  27.             }
  28.             if (x < m - 1 && board[x + 1][y] == 1 && !map.containsKey((x + 1) * n + y)) {
  29.                 map.put((x + 1) * n + y, step + 1);
  30.                 queue.offer((x + 1) * n + y);
  31.             }
  32.             if (y > 0 && board[x][y - 1] == 1 && !map.containsKey(x * n + y - 1)) {
  33.                 map.put(x * n + y - 1, step + 1);
  34.                 queue.offer(x * n + y - 1);
  35.             }
  36.             if (y < n - 1 && board[x][y + 1] == 1 && !map.containsKey(x * n + y + 1)) {
  37.                 map.put(x * n + y + 1, step + 1);
  38.                 queue.offer(x * n + y + 1);
  39.             }
  40.         }
  41.         return -1;
  42.     }
  43.    
  44.     public static void main(String[] args) {
  45.         ShortestStep solution = new ShortestStep();
  46.         int[][] board = {
  47.                 {1, 0, 1, 1, 1},
  48.                 {1, 0, 1, 1, 1},
  49.                 {1, 1, 1, 1, 1},
  50.                 {0, 1, 0, 0, 1},
  51.                 {1, 1, 1, 0, 1}};
  52.         System.out.println(solution.shortestPath(board, 0, 0, 4, 0));
  53.         
  54.         int[][] board0 = {
  55.                 {1, 0, 1, 1, 1},
  56.                 {1, 0, 1, 0, 1},
  57.                 {1, 1, 1, 0, 1},
  58.                 {0, 1, 0, 0, 1},
  59.                 {1, 1, 1, 0, 1}};
  60.         System.out.println(solution.shortestPath(board0, 0, 0, 4, 4));
  61.         
  62.         int[][] board2 = {
  63.                 {1, 0, 1, 1, 1},
  64.                 {1, 0, 1, 1, 1},
  65.                 {1, 1, 1, 0, 1},
  66.                 {0, 1, 0, 0, 1},
  67.                 {1, 1, 1, 0, 1}};
  68.         System.out.println(solution.shortestPath(board2, 0, 0, 4, 4));
  69.         
  70.         int[][] board3 = {
  71.                 {1, 0, 1, 1, 1},
  72.                 {1, 0, 1, 0, 1},
  73.                 {1, 1, 0, 1, 0},
  74.                 {0, 1, 0, 0, 1},
  75.                 {1, 1, 1, 0, 1}};
  76.         System.out.println(solution.shortestPath(board3, 0, 0, 2, 3));
  77.     }

  78. }
复制代码
回复

使用道具 举报

🔗
alucardzhou 2016-9-13 09:18:45 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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