C++で2つの整数を除算する
したがって、与えられた入力が被除数=7、除数=-3の場合、出力は-2になります。
これを解決するには、次の手順に従います-
- 2つの引数xとyを取ると、xがyを除算することを示します
- x<-Infinityおよびy=1の場合、無限大を返します
- a:=| x |、b:=| y |およびans:=0
- while a – b> =0
- p:=0
- while a –(左シフトb(左シフト1 p回))> =0
- p:=p + 1
- a:=a –(左シフトb、p回)
- ans:=ans+左シフト1p回
- x> 0が真で、y> 0も真の場合は、ansを返します。それ以外の場合は、(– ans)を返します。
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
class Solution {
public:
int divide(int l, int y) {
if(l <= INT_MIN && y == -1)return INT_MAX;
lli a = labs(l);
lli b = labs(y);
lli ans = 0;
while(a-b >= 0){
int x = 0;
while(a-(b << 1 << x) >= 0){
x++;
}
a -= b<<x;
ans += 1<<x;
}
return (l>0)== (y>0)?ans:-ans;
}
};
main(){
Solution ob;
cout << ob.divide(40, 3);
} 入力
40 3
出力
13
-
TwoSumIV-入力はC++のBSTです
二分探索木と1つのターゲット値があるとします。合計が指定されたターゲットと等しくなるように、BSTに2つの要素が存在するかどうかを確認する必要があります。 したがって、入力が次のような場合 その場合、出力はTrueになります。 これを解決するには、次の手順に従います- 配列を定義するv 関数inorder()を定義します。これはルートになります ルートがnullの場合、- 戻る 順序なし(ルートの左側) ルートの値をvに挿入 順序なし(ルートの左側) 関数findnode()を定義します。これにはkがかかります n:=vのサ
-
C++で2つの二分木をマージする
2つの二分木があり、一方をもう一方を覆うように配置すると、2つのツリーの一部のノードがオーバーラップし、他のノードがオーバーラップするとします。それらを新しいバイナリツリーにマージする必要があります。マージルールは、2つのノードがオーバーラップしている場合、ノード値を合計して、マージされたノードの新しい値として計算するようなものです。それ以外の場合は、空でないノードが新しいツリーのノードとして使用されます。 したがって、木が- その場合、出力は-になります これを解決するには、次の手順に従います- メソッドはmergeTrees()です。これは、2つのツリーノードn1と