Pythonでの1つのスワップによる以前の順列
正の整数(必ずしも一意ではない)の配列Aがあるとすると、1回のスワップで作成できるAよりも小さい辞書式順序で最大の順列を見つける必要があります(Aスワップは2つの数値A[i]とA [j])。不可能な場合は、同じ配列を返します。したがって、配列が[3,2,1]のような場合、2と1を交換することにより、出力は[3,1,2]になります
これを解決するには、次の手順に従います-
- n:=Aのサイズ
- 範囲n–2から-1までの左側
- left =-1の場合は、Aを返します。それ以外の場合は、A [left]> A [left + 1]の場合、中断します
- 要素:=0、インデックス:=0
- 右の場合は左+1からn
- A [right] 要素の場合、
- 要素=A[右]
- インデックス:=右
- A [right] 要素の場合、
- A[左]とA[インデックス]を入れ替えます
- Aを返す
理解を深めるために、次の実装を見てみましょう-
例
class Solution(object): def prevPermOpt1(self, A): n = len(A) for left in range(n-2,-2,-1): if left == -1: return A elif A[left]>A[left+1]: break element = 0 index = 0 for right in range(left+1,n): if A[right]<A[left] and A[right]>element: element = A[right] index = right temp = A[left] A[left] = A[index] A[index] = temp return A ob = Solution() print(ob.prevPermOpt1([4,2,3,1,3]))
入力
[4,2,3,1,3]
出力
[4, 2, 1, 3, 3]
-
Python Tkinterで複数のラベルを1行に表示するにはどうすればよいですか?
Python Tkinterで複数のラベルを1行に表示するには、labelのpack()メソッドを使用して、すべてのラベルを同じ側に揃えます。例を見て、1行に複数のラベルを表示する方法を見てみましょう。 ステップ- 必要なライブラリをインポートし、tkinterフレームのインスタンスを作成します。 ジオメトリを使用してフレームのサイズを設定します メソッド。 ラベルを作成し、「ラベル1」という名前を付けます 。フォントを設定し、背景色でラベルを強調表示します。 次に、 pack()を使用します ラベル付けの方法とsetside=LEFTを使用して、ラベルを画面の左側に配
-
Python-PyGameで画像を表示する
Pygameは、ゲームやマルチメディアアプリケーションを作成するためのPython用のマルチメディアライブラリです。この記事では、pygameモジュールを使用して、pygameウィンドウでの高さ、幅、位置を考慮して、画面に画像をペイントする方法を説明します。 以下のプログラムでは、pygameモジュールを初期化してから、画像のモードとキャプションを定義します。次に、画像をロードして座標を定義します。 screen.blit関数は、whileループがゲームの終了をリッスンし続けている間、画面をペイントします。 例 import pygame pygame.init() w = 300; h =