給定一個(gè)從1 到 n 排序的整數(shù)列表。
首先,從左到右,從第一個(gè)數(shù)字開(kāi)始,每隔一個(gè)數(shù)字進(jìn)行刪除,直到列表的末尾。
第二步,在剩下的數(shù)字中,從右到左,從倒數(shù)第一個(gè)數(shù)字開(kāi)始,每隔一個(gè)數(shù)字進(jìn)行刪除,直到列表開(kāi)頭。
我們不斷重復(fù)這兩步,從左到右和從右到左交替進(jìn)行,直到只剩下一個(gè)數(shù)字。
返回長(zhǎng)度為 n 的列表中,最后剩下的數(shù)字。
示例:
輸入:
n = 9,
1 2 3 4 5 6 7 8 9
2 4 6 8
2 6
6
輸出:
6
解
這是一道找規(guī)律的題,假設(shè)輸入為a時(shí),輸出b,那么輸入為2a時(shí),輸出滿(mǎn)足2*(a-b+1)
public int lastRemaining(int n) {
if(n == 1) return 1;
return 2*(n/2 - lastRemaining(n/2) + 1);
}