Pythonでk番目に大きいXOR座標値を見つけるプログラム
1つのmxn行列があるとします。および別の値k。ここで、行列の座標(a、b)の値は、すべての行列[i、j]のXORです。ここで、iは範囲(0からa)にあり、jは範囲(0からb)にあります。行列のすべての座標のk番目に大きい値(1インデックス)を見つける必要があります。
したがって、入力が次のような場合
5 | 2 |
1 | 6 |
また、k =1の場合、座標(0,1)の値は5 XOR 2 =7であり、これが最大であるため、出力は7になります。
これを解決するには、次の手順に従います-
- m:=行数、n:=列数
- 0からm-1の範囲のiの場合、do
- 0からn-1の範囲のjの場合、do
- jがゼロ以外の場合、
- matrix [i、j]:=matrix [i、j] XOR matrix [i、j-1]
- jがゼロ以外の場合、
- 0からn-1の範囲のjの場合、do
- 見た:=新しい地図
- count:=0
- 0からn-1の範囲のiの場合、do
- 0〜m-1の範囲のjの場合、do
- jがゼロ以外の場合、
- matrix [j、i]:=matrix [j、i] XOR matrix [j-1、i]
- seen [matrix [j、i]] =(可能であれば1 + sawen [matrix [j、i]]、それ以外の場合は1)
- count:=count + 1
- カウント>kの場合、
- min_value:=最小値
- sawed [min_value]:=saw [min_value]-1
- sawed [min_value]が0の場合、
- min_value-th要素を表示から削除
- jがゼロ以外の場合、
- 0〜m-1の範囲のjの場合、do
- 見たものの最小値を返す
例
理解を深めるために、次の実装を見てみましょう-
def solve(matrix, k): m, n = len(matrix), len(matrix[0]) for i in range(m): for j in range(n): if j: matrix[i][j] ^= matrix[i][j-1] seen = {} count = 0 for i in range(n): for j in range(m): if j: matrix[j][i] ^= matrix[j-1][i] seen[matrix[j][i]] = seen.get(matrix[j][i], 0) + 1 count += 1 if count > k: min_value = min(seen) seen[min_value] -= 1 if not seen[min_value]: seen.pop(min_value) return min(seen) matrix = [[5,2],[1,6]] k = 1 print(solve(matrix, k))
入力
[[5,2],[1,6]], 1
出力
7
-
配列内の最大の要素を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、配列の最大要素を計算する必要があります。 ここでは、ループ全体をトラバースして最大の要素を計算し、要素を取得するブルートフォースアプローチを使用します。 以下の実装を観察できます。 例 # largest function def largest(arr,n): #maximum element max = arr[0] # traverse the whole loop for
-
配列内の最大の要素を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列を指定すると、配列内で最大の要素を見つける必要があります。 アプローチ maxを最初の要素として初期化します。 この後、指定された配列を2番目の要素から最後までトラバースします。 トラバースされたすべての要素について、現在のmaxの値と比較します maxより大きい場合、maxが更新されます。 それ以外の場合、ステートメントはを超えます 以下の実装を見てみましょう- 例 def largest(arr,n): #maximal element