题解 | #数独#

开锁

http://www.nowcoder.com/practice/e7cbabbf7e0a41ec98055ee5f3d33bbe

  1. 使用广度优先算法:
 Queue<String> queue = new LinkedList<>();
        queue.offer("0000");
        while(!queue.isEmpty()){
            int size = queue.size();
            for(int i=0;i<size;i++){
                String content = queue.poll();
                for(int j=0;j<4;j++){
                    String plus = plusOne(content,j);
                    queue.offer(plus);
                    String minus =minusOne(content,j);
                    queue.offer(minus);
                }
            }
           //记录步数
        }
        return -1;
    }

2.处理当前是‘9’或‘0’的加减

 public String plusOne(String str,int i){
        char[] c = str.toCharArray();
        if(c[i]=='9'){
            c[i]='0';
        }else{
            c[i]+=1;
        }
        return new String(c);
    }
    
    public String minusOne(String str,int i){
        char[] c =str.toCharArray();
        if(c[i]=='0'){
          c[i]='9';
        }else{
            c[i]-=1;
        }
        return new String(c);
    }

3.记录已经遍历过的元素,保证不要重复选择 HashSet visite = new HashSet<>();

4.判断条件增加,遇到输入字符串和遍历到的字符串一样的时候,跳出当前循环,执行下一次循环

  for(int i=0;i<size;i++){
      String content = queue.poll();
      if(dends.contains(content))continue;
      ......

5.判断条件增加,找到目标值跳出循环

    for(int i=0;i<size;i++){
      String content = queue.poll();
      if(dends.contains(content))continue;
      if(content.equals(tar))return step;
      ......
全部评论
该牛油正在参与牛客写题解薅羊毛的活动,牛币,周边,京东卡超多奖品放送,活动进入倒计时!快来捡漏啦https://www.nowcoder.com/discuss/888949?source_id=profile_create_nctrack&channel=-1
点赞 回复 分享
发布于 2022-04-27 12:10

相关推荐

找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务