Leetcode 390 消除遊戲 C

2021-10-07 18:39:55 字數 711 閱讀 1798

給定乙個從1 到 n 排序的整數列表。

首先,從左到右,從第乙個數字開始,每隔乙個數字進行刪除,直到列表的末尾。

第二步,在剩下的數字中,從右到左,從倒數第乙個數字開始,每隔乙個數字進行刪除,直到列表開頭。

我們不斷重複這兩步,從左到右和從右到左交替進行,直到只剩下乙個數字。

返回長度為 n 的列表中,最後剩下的數字。

輸入:

n = 9,

1 2 3 4 5 6 7 8 9

2 4 6 8

2 66

輸出:6

我們令first為列表中的第乙個數,differ為列表中的元素的方差,cnt為列表中元素的個數。經過分析可知直到,differ在每輪消除後都會翻倍,cnt都會減半。同時first的改變與消除的方向和cnt的奇偶有關,如果從左向右刪,則一定會變為first+differ;如果從右向左刪,如果有奇數個,則first+differ,否則不會傳送變化。因此我們就能得到最終剩下的數了。詳細過程見**

int

lastremaining

(int n)

else

differ *=2

;//每次變為一倍

ltr =

!ltr;

cnt /=2

;//每次變為一半

}return first;

}

LeetCode 390 消除遊戲

給定乙個從1 到 n 排序的整數列表。首先,從左到右,從第乙個數字開始,每隔乙個數字進行刪除,直到列表的末尾。第二步,在剩下的數字中,從右到左,從倒數第乙個數字開始,每隔乙個數字進行刪除,直到列表開頭。我們不斷重複這兩步,從左到右和從右到左交替進行,直到只剩下乙個數字。返回長度為 n 的列表中,最後...

Leetcode 390 消除遊戲 遞迴

給定乙個從1 到 n 排序的整數列表。首先,從左到右,從第乙個數字開始,每隔乙個數字進行刪除,直到列表的末尾。第二步,在剩下的數字中,從右到左,從倒數第乙個數字開始,每隔乙個數字進行刪除,直到列表開頭。我們不斷重複這兩步,從左到右和從右到左交替進行,直到只剩下乙個數字。返回長度為 n 的列表中,最後...

390 消除遊戲(python

題目 給定乙個從1 到 n 排序的整數列表。首先,從左到右,從第乙個數字開始,每隔乙個數字進行刪除,直到列表的末尾。第二步,在剩下的數字中,從右到左,從倒數第乙個數字開始,每隔乙個數字進行刪除,直到列表開頭。我們不斷重複這兩步,從左到右和從右到左交替進行,直到只剩下乙個數字。返回長度為 n 的列表中...