tdudzik

Untitled

Jul 3rd, 2020
1,941
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.05 KB | None | 0 0
  1. class Solution {
  2.     public int[] prisonAfterNDays(int[] cells, int N) {
  3.         int prev[] = Arrays.copyOf(cells, cells.length);
  4.         int in = 0;
  5.         int i,j;
  6.         int mask = 1 << 7;
  7.         int maskFirst = (1 << 7) - 1;
  8.         int maskLast = maskFirst << 1;        
  9.        
  10.         for (i = 0; i < 8; i++) {
  11.             if(cells[i] == 1) {
  12.                 in = in | mask;
  13.             }
  14.             mask >>= 1;            
  15.         }        
  16.        
  17.         N = (N - 1) % 14 + 1;
  18.         int left, right , res;
  19.         for( i = 0; i < N; i++) {
  20.             left = in << 1;
  21.             right = in >> 1;
  22.             res = left ^ right;
  23.             res =~res;
  24.            
  25.             res = res & maskFirst;
  26.             res =res & maskLast;            
  27.             in = res;
  28.         }
  29.  
  30.         for (i = 7; i >=0 ; i--) {
  31.             if( (in & 1) == 1) {
  32.                 cells[i] = 1;
  33.             } else {
  34.                 cells[i] = 0;
  35.             }
  36.             in >>= 1;            
  37.         }
  38.         return cells;
  39.     }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment