Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public int[] prisonAfterNDays(int[] cells, int N) {
- int prev[] = Arrays.copyOf(cells, cells.length);
- int in = 0;
- int i,j;
- int mask = 1 << 7;
- int maskFirst = (1 << 7) - 1;
- int maskLast = maskFirst << 1;
- for (i = 0; i < 8; i++) {
- if(cells[i] == 1) {
- in = in | mask;
- }
- mask >>= 1;
- }
- N = (N - 1) % 14 + 1;
- int left, right , res;
- for( i = 0; i < N; i++) {
- left = in << 1;
- right = in >> 1;
- res = left ^ right;
- res =~res;
- res = res & maskFirst;
- res =res & maskLast;
- in = res;
- }
- for (i = 7; i >=0 ; i--) {
- if( (in & 1) == 1) {
- cells[i] = 1;
- } else {
- cells[i] = 0;
- }
- in >>= 1;
- }
- return cells;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment