Pythonの各クエリの最大XORを見つけるプログラム
サイズnのnumsと呼ばれる事前に並べ替えられた配列があり、値bも1つあるとします。次のクエリをn回実行します-
-
numsおよびkのすべての要素のXORが最大になるように、非負の値k <2^mを検索します。したがって、kはi番目のクエリに対する答えです。
-
現在の配列番号から最後の要素を削除します。
-
配列の回答を見つける必要があります。ここで、answer[i]はi番目のクエリに対する回答です。
したがって、入力がnums =[0,1,1,3]、m =2の場合、出力は[0,3,2,3]になります。これは、
-
nums =[0,1,1,3]、k =0(0 XOR 1 XOR 1 XOR 3 XOR 0 =3であるため)
-
nums =[0,1,1]、k =3(0 XOR 1 XOR 1 XOR 3 =3であるため)
-
nums =[0,1]、k =2(0 XOR 1 XOR 2 =3であるため)
-
nums =[0]、0 XOR 3=3であるためk=3
これを解決するには、次の手順に従います-
-
x:=2 ^ m-1
-
0からnums-1のサイズのiの場合、実行します
-
nums [i]:=nums [i] XOR x
-
x:=nums [i]
-
-
逆転後にnumsを返す
例
理解を深めるために、次の実装を見てみましょう-
def solve(nums, m): x=2**m-1 for i in range(len(nums)): nums[i]^= x x = nums[i] return(nums[::-1]) nums = [0,1,1,3] m = 2 print(solve(nums, m))
入力
[0,1,1,3], 2
出力
[0, 3, 2, 3]
-
Pythonで最大の建物の高さを見つけるプログラム
値nと、制限と呼ばれるペアの別のリストがあるとします。都市にn棟の新しい建物を建てたいと思っています。ただし、制限はほとんどありません。私たちは一列に建てることができ、建物には1からnまでのラベルが付けられています。制限には2つのパラメーターがあるため、restrictions [i] =(id_i、max_height_i)は、id_iの高さがmax_height_i以下でなければならないことを示します。新しい建物の高さに関する市の制限は次のとおりです- 各建物の高さは0または正の値である必要があります。 最初の建物の高さは0でなければなりません。 隣接する2つの建物の高さ
-
Pythonで隣接するサブアレイの最大積を見つけるプログラム
numsという配列があるとすると、最大の積を持つ配列(少なくとも1つの数値を含む)内の連続するサブ配列の要素の積を見つける必要があります。したがって、配列が[1,9,2,0,2,5]の場合、連続するサブ配列[1,9,2]の積が最大になるため、出力は18になります。 これを解決するには、次の手順に従います- max_list:=サイズ番号のリスト、0で埋める min_list:=サイズ番号のリスト、0で埋める min_list:=サイズ番号のリスト、0で埋める 1からnumsの長さのiの場合 max_list [i] =max_list [i-1] * nums [i]、min_li