// IMPORT LIBRARY PACKAGES NEEDED BY YOUR PROGRAM
import java.util.List;
import java.util.LinkedList;
import java.util.Arrays;
// SOME CLASSES WITHIN A PACKAGE MAY BE RESTRICTED
// DEFINE ANY CLASS AND METHOD NEEDED
// CLASS BEGINS, THIS CLASS IS REQUIRED
public class Solution
{
// METHOD SIGNATURE BEGINS, THIS METHOD IS REQUIRED
public List<Integer> cellCompete(int[] states, int days)
{
// WRITE YOUR CODE HERE
if (states.length != 8 || days < 1) {
return convertToList(states);
}
int n = states.length;
int prevVal, nextVal;
while (days-- > 0) {
prevVal = 0;
nextVal = 0;
for (int i = 0; i < n; i++) {
if (i < n - 1) {
nextVal = states[i + 1];
} else if (i == n - 1) {
nextVal = 0;
}
if (nextVal == prevVal) {
prevVal = states[i];
states[i] = 0;
} else {
prevVal = states[i];
states[i] = 1;
}
}
}
return convertToList(states);
}
private List<Integer> convertToList(int[] arr) {
List<Integer> output = new LinkedList<Integer>();
for (int a: arr) {
output.add(a);
}
return output;
}
// METHOD SIGNATURE ENDS
}
这个也会TLE
class Solution {
public int[] prisonAfterNDays(int[] cells, int days) {
if (cells.length != 8 || days < 1) {
return cells;
}
int n = cells.length;
int prevVal, nextVal;
while (days-- > 0) {
prevVal = 0;
nextVal = 0;
for (int i = 0; i < n; i++) {
if (i == 0 || i == n - 1) {
prevVal = cells[i];
cells[i] = 0;
continue;
}
if (i < n - 1) {
nextVal = cells[i + 1];
} else if (i == n - 1) {
nextVal = 0;
}
if (nextVal == prevVal) {
prevVal = cells[i];
cells[i] = 1;
} else {
prevVal = cells[i];
cells[i] = 0;
}
}
}
return cells;
}
}