LeetCode做题笔记(4)——error: variable-sized object may not be initialized|

本篇文章总结了在做LeetCode题目645时遇到的问题,主要是可变长数组的初始化问题。

645. 错误的集合

题目类型

数组

做题总结

  1. 每一次遍历可以同时做多件事情,例如本题在查找重复的时候也同时查找丢失,即for循环中是if-if-if类型,而不是if-elseif-else类型。
  2. 一套算法可能无法直接将题解出来,有是需要专门应对一些特殊情况,如本题中1缺失或n缺失导致算法找不到缺失值的情况。
  3. 使用变量定义数组容量时,不能同时进行初始化!!!想要定义一个数组用以统计每个数字出现的次数,这时就需要根据参数numsSize来决定数组容量,但使用int counts[numsSize + 1] = { 0 };时,系统报错:error: variable-sized object may not be initialized,即variable-sized数组可能不会被初始化!实际上声明int counts[numsSize + 1];并没有问题,问题在于同时进行的初始化!这个问题属于C语言规定吧,如果想要初始化,则必须在声明之后进行。其实比较好的做法还是动态内存分配:
int *counts = (int *) malloc( (numsSize + 1) * sizeof(int) );
memset( counts, 0, (numsSize + 1)*sizeof(int) );
posted @ 2020-04-22 12:29  凉风SK  阅读(3881)  评论(0编辑  收藏  举报