390. 消除游戏
给一个整数n,操作1..=n的数组,先从第一个删除隔一个删除一个再从最后一个开始隔一个删除,如此循环直到数组中只有一个数为止。
输入:n = 9
输出:6
解释:
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr = [2, 4, 6, 8]
arr = [2, 6]
arr = [6]
输入:n = 7
输出:6
解释:
arr = [1, 2, 3, 4, 5, 6, 7]//奇数删除第一个
arr = [2, 4, 6]//头尾都删除
arr = [2, 6]//偶数个删除第一个不删最后一个,只删除第一个
arr = [6]
输入:n = 8
输出:6
解释:
arr = [1, 2, 3, 4, 5, 6, 7, 8]//偶数删除第一个
arr = [2, 4, 6, 8]//只删除头
arr = [2, 6]//偶数删除第二个,只删除尾
arr = [6]
count用来纪录删除第一个还是尾巴删除
//偶数时候
if n1 % 2 == 0 {
if count == 0 {
count = 1;
left += temp;
} else if count == 1 {
count = 0;
right -= temp;
}
}
//奇数时候
else {
count = match count {
0 => { 1 }
_ => { 0 }
};
right -= temp;
left += temp;
}
temp *= 2;//扩大的差值
n1 /= 2;//更新数据大小,但数据为1时停止