Pythonでの最短のソートされていない連続サブアレイ
整数配列があるとすると、1つの連続したサブ配列を見つける必要があります。そのサブ配列を昇順で並べ替えるだけで、配列全体も並べ替えられます。そのような最短のサブアレイを見つけて、その長さを出力する必要があります。したがって、配列が[2,6,4,8,10,9,15]の場合、出力は5になります。配列は[6,4,8,10,9]
になります。これを解決するには、次の手順に従います-
-
res:=numsを配列として並べ替える
-
ans:=0
-
rをリンクリストとして設定
-
0からresの長さまでの範囲のiの場合
-
nums[i]がres[i]と同じでない場合は、iをr
に挿入します。
-
-
rの長さが0の場合は0を返し、rの長さが1の場合は1を返します
-
rの最後の要素を返す– r+1の最初の要素
例(Python)
理解を深めるために、次の実装を見てみましょう-
class Solution(object): def findUnsortedSubarray(self, nums): res = sorted(nums) ans = 0 r = [] for i in range(len(res)): if nums[i] != res[i]: r.append(i) if not len(r): return 0 if len(r) == 1: return 1 return r[-1]-r[0]+1 ob1 = Solution() print(ob1.findUnsortedSubarray([2,6,4,8,10,9,15]))
入力
[2,6,4,8,10,9,15]
出力
5
-
Pythonでターゲットを保持している最短のサイクル長を見つけるプログラム
有向グラフの隣接リストがあるとします。ここで、インデックスiの各リストは、ノードiからの接続されたノードで表されます。目標値もあります。ターゲットを含む最短サイクルの長さを見つける必要があります。解決策がない場合は-1を返します。 したがって、入力が次のような場合 0があることに注意してください。ただし、これは最短ではありません。 これを解決するには、次の手順に従います- 訪問:=新しいセット l:=要素ターゲットのリスト。 長さ:=0 lが空ではない場合は、 長さ:=長さ+ 1 nl:=新しいリスト lの各uについて、 グラフ[u]の各vについて、 vがターゲット
-
2つのソートされていないリストのソートされたマージされたリストを作成するPythonプログラム
ここでは、2つのユーザー入力リストが指定されており、2つのリストの要素はソートされていません。私たちのタスクは、これら2つのソートされていない配列をマージし、その後リストをソートすることです。 例 Input: A [] = {100, 50, 150} B [] = {200, 30, 20} Output: Merge List:{20, 30, 50, 100, 150, 200} アルゴリズム Step 1: first we create two user input list. Step 2: Final merge list size is (size of