📣 独立日限时特惠: VIP通行证立减$68
查看: 1362| 回复: 0
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] Sudoku solver javascript求助

全局:

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
刚学习javascript,用js写这道题总也通不过,完全一样的算法用java(基本逐行翻译)是可以AC的。请大家看看是怎么回事,Thanks~
  1. var rows=new Array(9);
  2. var cols=new Array(9);
  3. var grids=new Array(9);
  4. for(var i=0;i<9;i++){
  5.     rows[i]=new Set();
  6.     cols[i]=new Set();
  7.     grids[i]=new Set();
  8. }
  9. var solveSudoku = function(board) {
  10.     for(var i=0;i<9;i++){
  11.         for(var j=0;j<9;j++){
  12.             if(board[i][j]==='.')
  13.                 continue;
  14.             rows[i].add(board[i][j]);
  15.             cols[j].add(board[i][j]);
  16.             grids[Math.floor(i/3)*3+Math.floor(j/3)].add(board[i][j])
  17.         }
  18.     }
  19.     sudokuSolver(board,0);
  20.     return;
  21. };

  22. var sudokuSolver=function(board,n){
  23.     if(n==81)
  24.         return true;
  25.     row=Math.floor(n/9);
  26.     col=n%9;
  27.     var ch=board[row][col];
  28.     if(ch!=='.'){
  29.         return sudokuSolver(board,n+1);
  30.     }
  31.     for(var c='1';c<='9';c++){
  32.         if(rows[row].has(c)||cols[col].has(c)||
  33.             grids[Math.floor(row/3)*3+Math.floor(col/3)].has(c))
  34.             continue;
  35.         board[row][col]=c;
  36.         rows[row].add(c);
  37.         cols[col].add(c);
  38.         grids[Math.floor(row/3)*3+Math.floor(col/3)].add(c);
  39.         if(sudokuSolver(board,n+1))
  40.             return true;
  41.         rows[row].delete(c);
  42.         cols[col].delete(c);
  43.         grids[Math.floor(row/3)*3+Math.floor(col/3)].delete(c);
  44.     }
  45.     board[row][col]='.';
  46.     return false;
  47. }
复制代码
出错的case如下:
Input:["..9748...","7........",".2.1.9...","..7...24.",".64.1.59.",".98...3..","...8.3.2.","........6","...2759.."]
Output:["129748345","734256178","526139299","217345246","364612594","498789312","641823523","752461886","893275917"]
Expected:["519748632","783652419","426139875","357986241","264317598","198524367","975863124","832491756","641275983"]
看起来问题似乎是Set没能判断出已经重复的元素,所以出现了“752461886”这种。

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

本版积分规则

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