LeetCode做题笔记(4)-エラー:可変サイズのオブジェクトが初期化されていない可能性があります|

この記事では、LeetCodeトピック645を実行するときに発生する問題、主に可変長配列の初期化について要約します。

645.間違ったコレクション

質問タイプ

配列

まとめ

  1. 各トラバーサルは同時に複数の処理を実行できます。たとえば、重複を検索する場合、この質問では損失も検出されます。つまり、if-elseif-elseタイプではなく、forループのif-if-ifタイプです。
  2. アルゴリズムのセットでは、問題を直接解決できない場合があります。この問題で1が欠落しているか、nが欠落しているために、アルゴリズムが欠落した値を見つけるなど、特別に対処する必要がある特別な状況があります。
  3. 変数を使用して配列の容量を定義する場合、同時に初期化することはできません!各数値の出現回数をカウントする配列を定義する場合は、numsSizeパラメータに従って配列の容量を決定する必要がありますが、それint counts[numsSize + 1] = { 0 };使用すると、システムエラーを報告します。error: variable-sized object may not be initializedその可変サイズの配列は初期化されていない可能性があります!実際int counts[numsSize + 1];には、宣言に問題はありません、問題は同時初期化です!この質問はC言語の規制に属しています。初期化する場合は、宣言の後に行う必要があります。実際、動的メモリ割り当てを使用する方が良いです:
int *counts = (int *) malloc( (numsSize + 1) * sizeof(int) );
memset( counts, 0, (numsSize + 1)*sizeof(int) );

おすすめ

転載: www.cnblogs.com/uestcliming666/p/12751229.html