Pythonでインデックスまたはローカルピークを見つけるプログラム
numsという番号のリストがあるとします。 nums内のすべてのピーク要素のインデックスを昇順で並べ替える必要があります。これら3つの条件がすべて満たされた場合のピーク要素のインデックスi:1。nums [i]とは異なる右側の次の数値が存在しないか、nums[i]よりも小さい必要があります。2。上の前の数値nums [i]とは異なる左側が存在しないか、nums[i]よりも小さい必要があります。3。左側または右側にnums[i]とは異なる数値が少なくとも1つあります。
したがって、入力がnums =[5、8、8、8、6、11、11]のような場合、8のプラトーは次のように見なされるため、出力は[1、2、3、5、6]になります。ピーク[1,2,3]。そして、11も[5、6]です。
これを解決するには、次の手順に従います-
- n:=numsのサイズ
- ans:=新しいリスト
- i:=0
- i
- i0:=i
- i
- i:=i + 1
- i0が0でない場合、またはiがnでない場合、
- ansの最後に(i0からi-1までのリスト)を挿入します
例
理解を深めるために、次の実装を見てみましょう-
def solve(nums): n = len(nums) ans = [] i = 0 while i < n: i0 = i while i < n and nums[i] == nums[i0]: i += 1 if (i0 == 0 or nums[i0] > nums[i0 - 1]) and (i == n or nums[i0] > nums[i]): if i0 != 0 or i != n: ans.extend(range(i0, i)) return ans nums = [5, 8, 8, 8, 6, 11, 11] print(solve(nums))
入力
[5, 8, 8, 8, 6, 11, 11]
出力
[1, 2, 3, 5, 6]
-
Pythonでポリゴンの領域を見つけるプログラム
順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの領域を見つける必要があります。 したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は15になります。 これを解決するには、次の手順に従います- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です return x1 * y2-y1 * x2 メインの方法から、次の手順を実行します N:=ポイントのサイズ (firstx、firsty):=points [0] (prevx、prevy):=(fir
-
Pythonでポリゴンの周囲を見つけるプログラム
順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの周囲を見つける必要があります。 したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は16になります。 2つの辺の長さは3で、2つの辺の長さは5なので、2 * 5 + 2 * 3=16です。 これを解決するには、次の手順に従います- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です ユークリッド距離である((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))の平方根を返します (x1、y1)