Python
 Computer >> コンピューター >  >> プログラミング >> Python

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

  1. Pythonでターゲットを保持している最短のサイクル長を見つけるプログラム

    有向グラフの隣接リストがあるとします。ここで、インデックスiの各リストは、ノードiからの接続されたノードで表されます。目標値もあります。ターゲットを含む最短サイクルの長さを見つける必要があります。解決策がない場合は-1を返します。 したがって、入力が次のような場合 0があることに注意してください。ただし、これは最短ではありません。 これを解決するには、次の手順に従います- 訪問:=新しいセット l:=要素ターゲットのリスト。 長さ:=0 lが空ではない場合は、 長さ:=長さ+ 1 nl:=新しいリスト lの各uについて、 グラフ[u]の各vについて、 vがターゲット

  2. 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