Pythonを使用して3つの動きで最大値と最小値の最小差を見つけるプログラム
numsという配列があるとします。この配列から1つの要素を1回の移動で任意の値に変更できます。最大3回の移動を実行した後、numsの最大値と最小値の最小差を見つける必要があります。
したがって、入力がnums =[3,7,2,12,16]のような場合、[1,1,0,1,1]に指定された配列を作成できるため、出力は1になります。したがって、最大値は1で最小値は0なので、差は1です。
これを解決するには、次の手順に従います-
-
numsのサイズが<=4の場合、
-
0を返す
-
-
リスト番号を並べ替える
-
ans:=無限大
-
0から3の範囲のiの場合、実行
-
mi:=nums [i]
-
ma:=nums [numsの長さ-(3-i + 1)]
-
ans:=ma-miとansの最小値
-
-
ansを返す
理解を深めるために、次の実装を見てみましょう-
例
def solve(nums): if len(nums) <= 4: return 0 nums.sort() ans = float("inf") for i in range(4): mi = nums[i] ma = nums[-(3-i+1)] ans = min(ma-mi,ans) return ans nums = [3,7,2,12,16] print(solve(nums))
入力
[3,7,2,12,16]
出力
1
-
Pythonの有向グラフで最大の色の値を見つけるプログラム
n個の色付きノードとm個の異なるエッジを持つ有向グラフがあるとします。また、ノードには0からn-1までの番号が付けられています。小文字の文字列colがあります。ここで、col [i]は、このグラフのi番目のノードの色を表します(0-インデックス付き)。また、edges [j] =(u、v)が表すエッジリストがあり、uとvの間にエッジがあります。 グラフの有効なパスは、1からkまでのすべてのiのノードxiのシーケンスであり、xiからxi+1までの有向エッジがあります。パスの色は、そのパスの最も頻繁なノードの色です。そのグラフで有効なパスの最大の色の値を見つける必要があります。グラフにサイクルが
-
Pythonでノードと子孫の違いを見つけるプログラム
二分木があるとすると、ノードとその子孫の間で最大の絶対差を見つける必要があります。 したがって、入力が次のような場合 その場合、最大の絶対差はノード8と1の間であるため、出力は7になります。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 正と負の無限大のリストを返す left:=dfs(ノードの左側) right:=dfs(ノードの右) res:=(left [0]、right [0]の最小値とノードの値、およびleft [1]、right [1]とノードの値の最大値)とのペア ans: