美文网首页每日打卡
2022-02-21 838. 推多米诺

2022-02-21 838. 推多米诺

作者: 16孙一凡通工 | 来源:发表于2022-02-21 10:10 被阅读0次

    java版本:

    class Solution {
        public String pushDominoes(String dominoes) {
            // -- ++
            // 一秒一秒算
            // 记录所有的非...节点  记录   loc  time==1  dir=-1 or 1
          //用个队列记录,dir!=0的节点改变周遭节点,并加入队列当中
          //终止情况在越界和dom==点点的时候
         //时间数组 dir记录改变时间
            //  两侧同时有相反的力的时候,这个时候需要将 time+1的时间点变回. 
    
            //   loc  time state
           char[] dom= dominoes.toCharArray();
            int state=0,dire=0;
            int n=dominoes.length();
               int[] arr;
            int[] dir=new int[n];
            
    
            ArrayDeque<int[]> queue=new ArrayDeque<>();
            // char[] do=dominoes.toCharArray();
            for(int i=0;i<n;i++){
                if(dominoes.charAt(i)=='.'){
                    continue;
                }
                dire=dominoes.charAt(i)=='L'?-1:1;
                queue.add(new int[]{i,1,dire});
                dir[i]=1;
                
            }
         
    
            while(!queue.isEmpty()){
    
              arr=queue.poll();
              int loc=arr[0],time=arr[1],dir_queue=arr[2];
              int move=loc+dir_queue;
              
              if(dom[loc]=='.' || move<0 || move>=n){
               continue;
              }
              if(dir[move]==0){
                 
                 
                  time++;
                   queue.add(new int[]{move,time,dir_queue});
                   dir[move]=time;
                  dom[move]=dir_queue==-1?'L':'R';
                  
              }else if(dir[move]==time+1){
                  dom[move]='.';
              }
            }
            return String.valueOf(dom);
    
            
    
    
    
    
        }
    }

    相关文章

      网友评论

        本文标题:2022-02-21 838. 推多米诺

        本文链接:https://www.haomeiwen.com/subject/rhwblrtx.html