-
C++でソートされた配列IIから重複を削除する
ソートされた配列numがあるとすると、重複要素が最大2回表示され、新しい長さを返すように、重複をインプレースで削除する必要があります。このタスクを実行するために、余分なスペースを取ることはできません。これは、O(1)のスペースで解決する必要があります。たとえば、配列が[0,0,0,1,1,1,1,2,3,3]のような場合、出力は[0,0,1,1,2,3,3]になります。 、その長さは7 手順を見てみましょう- len:=2およびn:=配列のサイズ n <=2の場合、nを返します for i:=2からn if nums [i]!=nums[len-2]またはnums[i]!=num
-
C++で回転ソート配列IIを検索
配列が昇順でソートされているとします。それは、事前に私たちに知られていないいくつかのピボットで回転します。たとえば、配列が[0,0,1,2,2,5,6]のような場合、これは[2,5,6,0,0,1,2]になる可能性があります。検索するターゲット値があります。それが配列で見つかった場合はtrueを返し、そうでない場合はfalseを返します。したがって、配列が[2,5,6,0,0,1,2]のようで、ターゲットが0の場合、出力は0になります 手順を見てみましょう- 低:=0および高:=配列のサイズ 低<高 中:=低+(高-低)/ 2 nums [mid] =targetの
-
C++で数値のK番目の最下位ビットを出力します
この問題では、2つの数nとkが与えられます。私たちのタスクは、k thを印刷することです 数値nの最下位ビット。 問題を理解するために例を見てみましょう Input: n = 12 , k = 3 Output 1 Explanation: Let’s see the binary representation of n: 12 = 1100 ここで、3番目の最下位ビットは1です。 この問題を解決するために、数値の2進ビットを使用します。そして、数値のk番目のビットを生成します。このために、数値の2進シフトを使用し、数値を左シフト(k-1)回します。次に、シフトされた数値と
-
C++のソート済みリストIIから重複を削除する
いくつかの要素のリストがあるとします。複数回発生したすべての要素を削除する必要があります。したがって、個別の要素のみがリストに残ります。したがって、リストが[1,1,1,2,2,3,5,6,6,7,8]のような場合、出力は[3,5,7,8]になり、他のすべての要素が存在します複数回。 手順を見てみましょう- 値が-1のダミーノードを作成します。prev:=NULL、dummyPtr:=ダミー ヘッドがnullではない場合 next of headが存在する場合、またはheadの値が次のノードの値と同じでない場合は、 ダミーPtrの次:=ヘッド temp:=次の頭、次の頭をnullにする
-
C++での数の素数階乗
この問題では、数nが与えられます。私たちの仕事は、その素数階乗番号を印刷することです。 素数階乗番号 (Pn#)は、最初のn個の素数の積である数です。 素数階乗の数は、数nの階乗に似ています。違いは、階乗は任意の数にすることができますが、素数の場合はすべての素数が使用されることです。 問題を理解するために例を見てみましょう Input: N = 4 Output 210 Explanation: Primorial number, Pn# = 2 * 3 * 5 * 7 = 210 この問題を解決するには、最初のn個の素数を見つける必要があります。素数の値であるnまでのすべての素数の積
-
C++のサブセットII
一連の数字があるとします。そのセットのすべての可能なサブセットを生成する必要があります。これは、パワーセットとも呼ばれます。要素が重複している可能性があることに注意する必要があります。したがって、セットが[1,2,2]のような場合、べき集合は[[]、[1]、[2]、[1,2]、[2,2]、[1,2,2]になります。 ]] 手順を見てみましょう- 1つの配列resとxと呼ばれる別のセットを定義します 再帰的アプローチを使用してこれを解決します。したがって、再帰メソッド名がsolve()と呼ばれ、これがインデックス、1つの一時配列、および数値の配列(nums)を受け取る場合 resolve
-
C++のnを法とする素数nの原始根
この問題では、素数Nが与えられます。私たちのタスクは、Nを法とする素数Nの原始根を出力することです。 原始根 素数Nは、[1、n-1]の間にある整数xであり、kが[0、n-2]にあるxk(mod n)のすべての値は一意です。 問題を理解するために例を見てみましょう Input: 13 Output: 2 この問題を解決するには、オイラーのトーティエント関数と呼ばれる数学関数を使用する必要があります。 。 オイラーのトーティエント関数は、数nに対して互いに素である1からnまでの数の数です。 GCD(i、n)=1の場合、数iは互いに素です。 解法では、nを法とするxの乗法次数がオイラー
-
C++のプライムトリプレット
この問題では、数Nが与えられます。私たちのタスクは、N未満のすべての素数三つ子素数を印刷することです。 三つ子素数 3つの素数のセットです。これは、(p、p + 2、p + 6)または(p、p + 4、p + 6)の形式です。直接パターンの3つおきの素数は6の倍数であるため、すべての素数は上記のトリプレットに従ってグループ化されます。 問題を理解するための例を見てみましょう Input: N = 13 Output: 5 7 11 この問題を解決するには、N以下のすべての素数を見つける必要があります。そしてトリプレットをチェックします。 ソリューションの実装を示すコード 例 #incl
-
C++の逆リンクリストII
リンクリストがあるとします。ノードを位置mからnに反転する必要があります。 1回のパスで実行する必要があります。したがって、リストが[1,2,3,4,5]で、m=2およびn=4の場合、結果は[1,4、、3,2,5]になります。 手順を見てみましょう- 2つのメソッド、reverseN()とreverseBetween()があります。 reverseBetween()はメインメソッドとして機能します。 successorと呼ばれる1つのリンクノードポインタをnullとして定義します reverseNは次のように機能します- n =1の場合、後継者:=頭の次、頭を返す last =rev
-
C++の素数文字列
この問題では、文字列が与えられます。私たちの仕事ははい/いいえを印刷することです に基づくは、文字列の文字のASCII値の合計が素数であるかどうかです。 ASCII値は文字エンコードです プライム番号 は、数値自体と1でのみ割り切れる数値です。 問題を理解するために例を見てみましょう Input: string = “Hello” Output:No この問題を解決するには、文字列のすべての文字のASCII値の合計を見つける必要があります。そして、合計を変数に格納してから、合計が素数であるかどうかを確認します。 ソリューションの実装を示すコード 例 #incl
-
C ++の素数ポイント(数値を2つの素数に分割するポイント)
この問題では、数値Nが与えられます。私たちのタスクは、数値のすべての素数を出力することです。そうでない場合は、素数がない場合は-1を出力します。 プライムポイント 数値を2つの素数に分割するインデックス値です。1つは左側に、もう1つは右側にあります。 問題を理解するために例を見てみましょう Input: 2359 Output: 1 説明 :インデックス1で数値を分割する場合。2と59を2つの素数として取得します。 この問題を解決するために、数値の左右の分割が可能かどうかを確認します。有効な場合は、生成できる数値のすべての組み合わせを試し、それらが素数であるかどうかを確認します。プライ
-
C++での素数とフィボナッチ
この問題では、数nが与えられます。私たちの仕事は、n以下のすべての素数とフィボナッチ数を印刷することです。 問題を理解するために例を見てみましょう Input: n = 30 Output: 2 3 5 13 説明 30未満のフィボナッチ数は次のとおりです:1 1 2 3 5 81321。 これらの数のうち、素数は2 3513です。 この問題を解決するには、n未満のフィボナッチ数列のすべての数が素数であるかどうかを確認する必要があります。 このため、n以下のすべての素数が見つかります。そして、生成された数がフィボナッチ数列に含まれているかどうかを確認します。 番号がフィボナッチ
-
C++のリンクリストサイクルII
リンクリストがあり、サイクルがあるかどうかを確認する必要があるとします。指定されたリンクリストでサイクルを表すために、posと呼ばれる1つの整数ポインターを使用します。この位置は、テールが接続されているリンクリスト内の位置を表します。したがって、posが-1の場合、リンクリストにサイクルは存在しません。たとえば、リンクリストは[5、3、2、0、-4、7]のようで、pos =1です。したがって、サイクルがあり、テールは2番目のノードに接続されます。制約は、リストを変更できないことです これを解決するには、次の手順に従います- 遅い:=頭と速い:=頭 低速、高速、次の高速が利用可能である間、
-
C++で合計Sを持つ素数Pの後の素数
この問題では、合計S、素数P、およびNの3つの数が与えられます。私たちのタスクは、合計がSに等しいPより大きいN個の素数をすべて見つけることです。 私たちの問題を理解するために例を見てみましょう Input: N = 2, P = 5, S = 18 Output: 7 11 Explanation: Prime numbers greater than 5 : 7 11 13 Sum = 7 + 11 = 18 この問題を解決するには、PとSの間のすべての素数を見つける必要があります。次に、合計がSになるN個の素数を見つけます。このためにバックトラッキングを使用します。 ソリューション
-
Pythonでの二分木プレオーダートラバーサル
二分木があるとします。そのツリーのプレオーダートラバーサルを返す必要があります。したがって、ツリーが次のような場合- その場合、プレオーダートラバーサルは次のようになります:[3,9,20,15,7] これを解決するには、次の手順に従います- resとstという空のリストを作成します。 node:=root ノードまたはstが空でない場合 ノードがnullでない場合、 ノードのvalをresに挿入し、ノードをstに挿入し、ノードを設定します:=ノードの左側 temp:=stの最後の要素、およびstの最後の要素を削除 臨時雇用者の権利が利用できる場合は、 node:=t
-
挿入ソートリストC++
リンクリストがあるとすると、このリストに対して挿入ソートを実行する必要があります。したがって、リストが[9,45,23,71,80,55]のような場合、ソートされたリストは[9,23,45,55,71,80]になります。 これを解決するには、次の手順に従います- ダミー:=ランダムな値を持つ新しいノード ノード:=指定されたリスト ノードがnullでない間、 newNode =ノードの次、dummyHead:=ダミーの次、prevDummyHead:=ダミー 真の間に- ノードの値 ノードの次:=ダミーヘッド prevDummyHeadの次:=ノ
-
C++でのバイナリ表現のセットビットの素数
この問題では、2つの整数LとRが与えられます。ビットカウントをLからRの間にある素数に設定した合計数を出力するタスク。 問題を理解するために例を見てみましょう Input: L = 7, R = 12 Output: 6 Explanation: 7 -> 111 , set bits = 2, prime number. 8 -> 1000 , set bits = 1, not prime number. 9 -> 1001 , set bits = 2, prime number 10 -> 1010 , set bits = 2, prime number 1
-
C++の配列要素のLCMの素因数
この問題では、1 <=arr [i] <=10 12の範囲内の配列が与えられます。 。私たちのタスクは、配列のすべての要素のLCMのすべての素因数を印刷することです。 私たちの問題を理解するために例を見てみましょう Input: array = {2 , 5 , 15} Output: 2 3 5 Explanation: LCM = 30 Factors of 30 = 2 * 3 * 5 この問題を解決するには、最初に配列桁のLCMを見つけ、次にLCMの因数を見つけて、すべての素数をプライミングする必要があります。 これは、コンパイラが10^6のオーダーのLCMを見つけるのに少し重
-
C++で回転ソートされた配列の最小値を見つける
配列があり、それがソートされていると仮定します。配列がピボットで回転していると考えてください。これは私たちにはわかりません。したがって、その回転した配列から最小値を見つける必要があります。したがって、配列が[3,4,5,1,2]のような場合、出力は1になります。 これを解決するには、次の手順に従います- low:=0およびhigh:=配列の最後のインデックス、n:=配列のサイズ、ans:=無限大 低い<=高い 中:=低+(高-低)/ 2 arr [low]
-
C++での大きな数の素因数
この問題では、整数N <=10^18が与えられます。私たちの仕事は、その数のすべての素因数とその発生頻度を印刷することです。 問題を理解するために例を見てみましょう Input: 100 Output: 2 2 5 2 Explanation: prime factorization of 100 = 2 * 2 * 5 * 5. この問題を解決するには、数の素因数を見つけて、それらの頻度を計算する必要があります。 このために、2の頻度を係数としてチェックし、その数を2で除算します。次に、3から平方根nまでをチェックします。数の因数である各素数の頻度を除算して増