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

Pythonの障害リストからドロップされた正しいセンサー値を見つけるプログラム


2つのリストnums1とnums2があり、それらはセンサーメトリックを表しています。各リストには一意の値が含まれているため、a≠bです。これら2つのリストの1つは正確なセンサーメトリックを保持していますが、もう1つには障害があります。障害のあるリストでは、最後の値ではない1つの値が削除され、間違った値がそのリストの最後に配置されました。ドロップされた実際の値を見つける必要があります。

したがって、入力がnums1 =[5、10、15] nums2 =[10、15、8]の場合、最初のリストnums1は実際の値=[5、10、15]を保持するため、出力は5になります。 2番目の配列では、それが削除され、最後に8が挿入されます。

これを解決するには、次の手順に従います-

  • 低:=0
  • 高:=
  • nums1のサイズ-1
  • 低い<高い間、実行する
    • 中:=床(低+高)/ 2
    • nums1[mid]がnums2[mid]と同じ場合、
      • 低:=中+1
    • それ以外の場合、
      • 高:=中
  • nums1 [low +1]がnums2[low]と同じ場合はnums1[low]を返し、それ以外の場合はnums2[low]を返します

理解を深めるために、次の実装を見てみましょう-

def solve(nums1, nums2):
   low, high = 0, len(nums1) - 1

   while low < high:
      mid = (low + high) // 2
      if nums1[mid] == nums2[mid]:
         low = mid + 1
      else:
         high = mid

   return nums1[low] if nums1[low + 1] == nums2[low] else nums2[low]

nums1 = [5, 10, 15]
nums2 = [10, 15, 8]
print(solve(nums1, nums2))

入力

[5, 10, 15], [10, 15, 8]

出力

5

  1. Pythonのサブツリーのノード値の合計から最小値を見つけるプログラム

    すべてのノードに1からnまでの番号が付けられたツリーがあるとします。各ノードには整数値が含まれています。ここで、ツリーからエッジを削除する場合、2つのサブツリーのノード値の合計の差を最小限に抑える必要があります。そのようなサブツリー間の最小の違いを見つけて返す必要があります。ツリーはエッジのコレクションとして提供され、ノードの値も提供されます。 したがって、入力がn =6の場合、edge_list =[[1、2]、[1、3]、[2、4]、[3、5]、[3、6]]、values =[15、 25、15、55、15、65]の場合、出力は0になります。 エッジ(1,2)を削除すると、重みの

  2. リスト内の最小数を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal