Pythonで昇順で表示できるようにカードを配置するプログラム
カードのリストがあり、昇順で表示されるようにカードを並べ替えたいとします。ご存知のように、カードは次のように公開されます。1.一番上のカードが削除されて公開され、次のカードが後ろに移動します。 2.カードがなくなるまで、手順1を繰り返します。カードが昇順で表示されるように、カードの順序を見つける必要があります。
したがって、入力がcards =[1、2、3、4、5、6、7、8]の場合、出力は[1、5、2、7、3、6、4、8]になります。 1が削除され、5が後ろに移動すると、現在の状況[2、7、3、6、4、8、5]。 2が削除され、7が後ろに移動され、現在の状況[3、6、4、8、5、7] 3が削除され、6が後ろに移動され、現在の状況[4、8、5、7、6] 4が削除され、8が後ろに移動され、現在の状況[5、7、6、8] 5が削除され、7が後ろに移動され、現在の状況[6、8、7]。 6が削除され、8が後ろに移動されます。現在の状況[7、8]。 7が削除され、カードは1枚だけになります[8]。次に、[8]
を削除しますこれを解決するには、次の手順に従います-
- リストカードを並べ替える
- idx:=要素0からカードの長さまでのリスト
- order:=新しいリスト
- q:=idxのキューと挿入要素
- qがゼロ以外の場合、do
- qの左側から要素を削除し、順番に挿入します
- qがゼロ以外の場合、
- ans:=サイズのカードのリストを作成し、0を入力します
- 注文からの要素iとカードからのカードごとに、
- ans [i]:=カード
- 回答を返す
理解を深めるために、次の実装を見てみましょう-
例
from collections import deque class Solution: def solve(self, cards): cards.sort() idx=[i for i in range(len(cards))] order=[] q=deque(idx) while q: order.append(q.popleft()) if q: q.append(q.popleft()) ans=[0 for _ in cards] for i,card in zip(order,cards): ans[i]=card return ans ob = Solution() print(ob.solve([1, 2, 3, 4, 5, 6, 7, 8]))
入力
[1, 2, 3, 4, 5, 6, 7, 8]
出力
[1, 5, 2, 7, 3, 6, 4, 8]
-
Pythonでお互いを攻撃できないようにn個のルークを配置する方法をいくつか見つけるプログラム
サイズnxnのチェス盤を表す数nがあるとします。お互いに攻撃できないように、n個のルークを配置できる方法の数を見つける必要があります。ここでは、チェス盤の一部のセルが占有されている場合と、セルが占有されていない場合の2つの方法が異なると見なされます。 (ルークが同じ行または同じ列にある場合、ルークは互いに攻撃する可能性があることを私たちは知っています。) したがって、入力が3のような場合、出力は6になります これを解決するには、次の手順に従います- f=nの階乗 fを返す 理解を深めるために、次の実装を見てみましょう- 例 import math class Solution:
-
文の単語を昇順で並べ替えるPythonプログラム
文の単語を昇順で並べ替えるには、まず、スペースを分割点として文を単語に分割する必要があります。簡単にするために、スペースで分割し、句読点をそこに配置します。 replaceまたはregexを使用してそれを削除することもできます。 文を分割したら、配列をその場で並べ替えるか、並べ替えてから新しい配列を返すかに応じて、sortまたはsortedメソッドを使用して、語彙的に(言語辞書のように)単語を並べ替えることができます。 インプレースソート:配列/リストをインプレースでソートする場合、つまり現在の構造自体の順序を変更する場合は、sortメソッドを直接使用できます。たとえば、 例 sent =