★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-xpzrmuoj-me.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
In a deck of cards, every card has a unique integer. You can order the deck in any order you want.git
Initially, all the cards start face down (unrevealed) in one deck.github
Now, you do the following steps repeatedly, until all cards are revealed:微信
Return an ordering of the deck that would reveal the cards in increasing order.app
The first entry in the answer is considered to be the top of the deck.ide
Example 1:this
Input: [17,13,11,2,3,5,7]
Output: [2,13,3,11,5,17,7] Explanation: We get the deck in the order [17,13,11,2,3,5,7] (this order doesn't matter), and reorder it. After reordering, the deck starts as [2,13,3,11,5,17,7], where 2 is the top of the deck. We reveal 2, and move 13 to the bottom. The deck is now [3,11,5,17,7,13]. We reveal 3, and move 11 to the bottom. The deck is now [5,17,7,13,11]. We reveal 5, and move 17 to the bottom. The deck is now [7,13,11,17]. We reveal 7, and move 13 to the bottom. The deck is now [11,17,13]. We reveal 11, and move 17 to the bottom. The deck is now [13,17]. We reveal 13, and move 17 to the bottom. The deck is now [17]. We reveal 17. Since all the cards revealed are in increasing order, the answer is correct.
Note:spa
1 <= A.length <= 1000
1 <= A[i] <= 10^6
A[i] != A[j]
for all i != j
牌組中的每張卡牌都對應有一個惟一的整數。你能夠按你想要的順序對這套卡片進行排序。code
最初,這些卡牌在牌組裏是正面朝下的(即,未顯示狀態)。htm
如今,重複執行如下步驟,直到顯示全部卡牌爲止:
返回能以遞增順序顯示卡牌的牌組順序。
答案中的第一張牌被認爲處於牌堆頂部。
示例:
輸入:[17,13,11,2,3,5,7] 輸出:[2,13,3,11,5,17,7] 解釋: 咱們獲得的牌組順序爲 [17,13,11,2,3,5,7](這個順序不重要),而後將其從新排序。 從新排序後,牌組以 [2,13,3,11,5,17,7] 開始,其中 2 位於牌組的頂部。 咱們顯示 2,而後將 13 移到底部。牌組如今是 [3,11,5,17,7,13]。 咱們顯示 3,並將 11 移到底部。牌組如今是 [5,17,7,13,11]。 咱們顯示 5,而後將 17 移到底部。牌組如今是 [7,13,11,17]。 咱們顯示 7,並將 13 移到底部。牌組如今是 [11,17,13]。 咱們顯示 11,而後將 17 移到底部。牌組如今是 [13,17]。 咱們展現 13,而後將 17 移到底部。牌組如今是 [17]。 咱們顯示 17。 因爲全部卡片都是按遞增順序排列顯示的,因此答案是正確的。
提示:
1 <= A.length <= 1000
1 <= A[i] <= 10^6
i != j
,A[i] != A[j]
40ms
1 class Solution { 2 func deckRevealedIncreasing(_ deck: [Int]) -> [Int] { 3 var results = [Int]() 4 let deck = deck.sorted(by: >) 5 for d in deck { 6 if results.count != 0 { 7 let temp = results.removeFirst() 8 results.append(temp) 9 } 10 results.append(d) 11 } 12 return results.reversed() 13 } 14 }
40ms
1 class Solution { 2 func deckRevealedIncreasing(_ deck: [Int]) -> [Int] { 3 var n:Int = deck.count 4 var deck:[Int] = deck.sorted(by:<) 5 var q:[Int] = [Int]() 6 for i in (0...(n - 1)).reversed() 7 { 8 if i < n-1 9 { 10 q.insert(q.removeLast(), at: 0) 11 } 12 q.insert(deck[i], at: 0) 13 } 14 var p:Int = 0 15 var ret:[Int] = [Int](repeating:0,count:n) 16 for x in q 17 { 18 ret[p] = x 19 p += 1 20 } 21 return ret 22 } 23 }
1 class Solution { 2 func deckRevealedIncreasing(_ deck: [Int]) -> [Int] { 3 let N = deck.count 4 var stack = [Int]() 5 for i in 0..<N { 6 stack.append(i) 7 } 8 9 let sorted = deck.sorted { $0 < $1 } 10 var answer = Array(repeating: 0, count: N) 11 12 for num in sorted { 13 answer[stack.removeFirst()] = num 14 15 if !stack.isEmpty { 16 let nextIndex = stack.removeFirst() 17 stack.append(nextIndex) 18 } 19 } 20 21 return answer 22 } 23 }
52ms
1 class Solution { 2 func deckRevealedIncreasing(_ deck: [Int]) -> [Int] { 3 var array = Array(0..<deck.count) 4 var res:[Int] = [] 5 let sort = deck.sorted() 6 7 for _ in 0..<array.count-1{ 8 res.append(array.removeFirst()) 9 array.append(array.removeFirst()) 10 } 11 res.append(array[0]) 12 13 return res.enumerated().sorted(by:{$0.element < $1.element}).map({$0.offset}).map({sort[$0]}) 14 } 15 }
60ms
1 class Solution { 2 func deckRevealedIncreasing(_ deck: [Int]) -> [Int] { 3 var ds = deck.sorted() 4 var qs = [Int]() 5 while !ds.isEmpty { 6 if let q = qs.last { 7 qs.removeLast() 8 qs.insert(q, at: 0) 9 } 10 let r = ds.removeLast() 11 qs.insert(r, at: 0) 12 } 13 return qs 14 15 } 16 }
64ms
1 class Solution { 2 func deckRevealedIncreasing(_ deck: [Int]) -> [Int] { 3 var sortedDeck = deck.sorted{$0<$1} 4 if (sortedDeck.count < 3) { 5 return sortedDeck 6 } 7 var res:[Int] = Array(sortedDeck[sortedDeck.count - 2..<sortedDeck.count]) 8 sortedDeck[sortedDeck.count - 2..<sortedDeck.count] = [] 9 while sortedDeck.count > 0{ 10 var last = res.removeLast() 11 res.insert(last, at: 0); 12 res.insert(sortedDeck.removeLast(), at: 0) 13 } 14 return res 15 } 16 }