C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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, ]

  1. C++のバイナリツリーで最大レベルの合計を見つける

    この問題では、正と負の値を持つ二分木が与えられます。私たちのタスクは、バイナリツリーで最大レベルの合計を見つけることです。 問題の説明: 二分木があります。二分木のすべてのレベルの合計を見つけて、それらの最大値を返します。 問題を理解するために例を見てみましょう 入力: 出力: 5 説明: レベル1:3の要素の合計 レベル2の要素の合計:-3 + 4 =1 レベル3の要素の合計:5 --1 + 6-5 =5 ソリューションアプローチ この問題を解決するには、レベル順トラバーサルを使用してツリーをトラバースする必要があります。そして、レベルごとに、合計

  2. C++のツリーで最大のサブツリーの合計を検索します

    この問題では、二分木が与えられます。私たちのタスクは、ツリー内で最大のサブツリーの合計を見つけることです。 問題の説明: 二分木は、正の値と負の値で構成されます。そして、ノードの合計が最大のサブツリーを見つける必要があります。 問題を理解するために例を見てみましょう。 出力: 13 説明: 左サブツリーの合計は7です 右サブツリーの合計は1です ツリーの合計は13です ソリューションアプローチ この問題を解決するために、ポストオーダートラバーサルを実行します。ノードの左側のサブツリーと右側のサブツリーの合計を計算します。現在のノードについて、現在のノードの