Amazon OA2准备——01list
2015-10-17 04:01
441 查看
这道题目是这样的: 有一个list(eg.[1,0,0,0,0,1,0,0])每天更新,每个单元的新值看左右两边的邻居。如果左右一样就把当前值设置为0,不一样就设置为1。头和尾的前后分别当做是0。
比如说上面的例子就可以看成(0)[1,0,0,0,0,1,0,0](0)
实现如下
private static int[] FlipList(int[] list, int fliptime) {
// TODO Auto-generated method stub
if(list.length < 1)
return list;
int currentTime = 0;
while(currentTime < fliptime)
{
int[] newlist = new int[list.length];
for(int i=0; i < list.length; i++)
{
int last,next;
if((i-1) < 0)
last = 0;
else
last = list[i-1];
if((i+1) > (list.length-1))
next = 0;
else
next = list[i+1];
if(last == next)
{
newlist[i] = 0;
}
else
newlist[i] = 1;
}
list = newlist;
currentTime++;
}
return list;
}
比如说上面的例子就可以看成(0)[1,0,0,0,0,1,0,0](0)
实现如下
private static int[] FlipList(int[] list, int fliptime) {
// TODO Auto-generated method stub
if(list.length < 1)
return list;
int currentTime = 0;
while(currentTime < fliptime)
{
int[] newlist = new int[list.length];
for(int i=0; i < list.length; i++)
{
int last,next;
if((i-1) < 0)
last = 0;
else
last = list[i-1];
if((i+1) > (list.length-1))
next = 0;
else
next = list[i+1];
if(last == next)
{
newlist[i] = 0;
}
else
newlist[i] = 1;
}
list = newlist;
currentTime++;
}
return list;
}