C++でゼロまでのN個の一意の整数の合計を見つける
整数nがあるとします。合計が0になるように、n個の一意の整数を含む配列を返す必要があります。したがって、入力がn =5の場合、可能な出力の1つは[-7、-1、1、3、4]
>これを解決するには、次の手順に従います-
- 最終的な答えとして配列Aを取り、x:=0を取ります
- 0からn–2の範囲のiの場合
- A [i] =(i + 1)
- x:=x + i + 1
- A [n – 1] =x
- Aを返す
例
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; void print_vector(vector<int> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } class Solution { public: vector<int> sumZero(int n) { vector <int> ans(n); int x = 0; for(int i = 0; i < n - 1; i++){ ans[i] = (i + 1); x += (i + 1); } ans[n - 1] = -x; return ans; } }; main(){ Solution ob; print_vector(ob.sumZero(10)) ; }
入力
10
出力
[1, 2, 3, 4, 5, 6, 7, 8, 9, -45, ]
-
C++のバイナリツリーで最大レベルの合計を見つける
この問題では、正と負の値を持つ二分木が与えられます。私たちのタスクは、バイナリツリーで最大レベルの合計を見つけることです。 問題の説明: 二分木があります。二分木のすべてのレベルの合計を見つけて、それらの最大値を返します。 問題を理解するために例を見てみましょう 入力: 出力: 5 説明: レベル1:3の要素の合計 レベル2の要素の合計:-3 + 4 =1 レベル3の要素の合計:5 --1 + 6-5 =5 ソリューションアプローチ この問題を解決するには、レベル順トラバーサルを使用してツリーをトラバースする必要があります。そして、レベルごとに、合計
-
C++のツリーで最大のサブツリーの合計を検索します
この問題では、二分木が与えられます。私たちのタスクは、ツリー内で最大のサブツリーの合計を見つけることです。 問題の説明: 二分木は、正の値と負の値で構成されます。そして、ノードの合計が最大のサブツリーを見つける必要があります。 問題を理解するために例を見てみましょう。 出力: 13 説明: 左サブツリーの合計は7です 右サブツリーの合計は1です ツリーの合計は13です ソリューションアプローチ この問題を解決するために、ポストオーダートラバーサルを実行します。ノードの左側のサブツリーと右側のサブツリーの合計を計算します。現在のノードについて、現在のノードの