File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+     string pushDominoes(string dominoes) {
4+         string ans = dominoes;
5+         vector<int> dist(dominoes.size(), 0);
6+         
7+         int latestr = -1; // last index of 'R'
8+         char last = '.';  // last force seen
9+ 
10+         // First pass: handle 'R' forces from left to right
11+         for (int i = 0; i < dominoes.size(); i++) {
12+             if (dominoes[i] == 'R') {
13+                 latestr = i;
14+                 last = 'R';
15+             } else if (dominoes[i] == '.' && latestr != -1 && last == 'R') {
16+                 dist[i] = abs(latestr - i);
17+                 ans[i] = 'R';
18+             } else {
19+                 last = 'L'; // force blocked by L
20+             }
21+         }
22+ 
23+         last = '.';
24+         int latestl = dominoes.size(); // last index of 'L'
25+         int d = 0;
26+ 
27+         // Second pass: handle 'L' forces from right to left
28+         for (int i = dominoes.size() - 1; i >= 0; i--) {
29+             if (dist[i] == -1) continue; // skip already pushed by 'R'
30+ 
31+             if (dominoes[i] == 'L') {
32+                 latestl = i;
33+                 last = 'L';
34+             } else if (dominoes[i] == '.' && last == 'L') {
35+                 d = abs(latestl - i);
36+                 if (dist[i] == 0 || d < dist[i]) {
37+                     ans[i] = 'L';
38+                 } else if (d == dist[i]) {
39+                     ans[i] = '.'; // equal push from both sides
40+                 }
41+             } else {
42+                 last = 'R'; // force blocked by R
43+             }
44+         }
45+ 
46+         return ans;
47+     }
48+ };
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments