Pythonで数値を昇順または降順で並べ替える最小コストを見つけるプログラム
numsと呼ばれる数値のリストがあるとすると、リストを任意の順序(昇順または降順)でソートするための最小コストを見つける必要があります。ここでのコストは、要素の古い値と新しい値の差の合計です。
したがって、入力が[2、5、4]の場合、出力は2になります。
これを解決するには、次の手順に従います-
- temp:=配列番号をコピーします
- リストの一時を並べ替える
- c1:=0、c2:=0
- n:=numsのサイズ
- 0からnの範囲のiについては、
- nums[i]がtemp[i]と同じでない場合、
- c1:=c1 + | nums [i] -temp [i] |
- nums[i]がtemp[n-1-i]と同じでない場合、
- c2:=c2 + | nums [i] -temp [n-i-1] |
- nums[i]がtemp[i]と同じでない場合、
- c1とc2の最小値を返す
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def solve(self, nums): temp=nums.copy() temp.sort() c1=0 c2=0 n=len(nums) for i in range(n): if nums[i]!=temp[i]: c1+=abs(nums[i]-temp[i]) if nums[i]!=temp[n-1-i]: c2+=abs(nums[i]-temp[n-i-1]) return min(c1,c2) ob = Solution() print(ob.solve([2, 5, 4]))
入力
[2, 5, 4]
出力
2
-
Pythonでスティックをカットするための最小コストを見つけるためのプログラム
値nとcutsという配列があるとします。長さn単位の木の棒があると考えてください。スティックには0からnまでのラベルが付いています。ここで、cuts [i]は、カットできる位置を表します。順番にカットする必要がありますが、カットの順番は自由に変更できます。ここで、1カットのコストはカットするスティックのサイズであり、合計コストはすべてのカットのコストの合計です。削減の最小総コストを見つける必要があります。 したがって、入力がn =7、cuts =[5,1,4,3]の場合、出力は16になります。これは、[3,5,1,4]のように注文すると、最初に長さ7から3なので、コストは7です。次に、長さ3
-
Pythonですべてのポイントを接続するための最小コストを見つけるためのプログラム
(x、y)の形式のいくつかの点を持つpointsという配列があるとします。ここで、2つのポイント(xi、yi)と(xj、yj)を接続するコストは、それらの間のマンハッタン距離であり、式は| xi--xj|です。 + | yi--yj|。すべてのポイントを接続するための最小コストを見つける必要があります。 したがって、ここでの合計距離は(6 + 5 + 3 + 8)=22です。 これを解決するには、次の手順に従います- points_set:=範囲0からポイントのサイズ-1までの数値を保持する新しいセット ヒープ:=ペア(0、0)でヒープを作成します visited_node: