【发布时间】:2022-01-14 12:45:06
【问题描述】:
bool containsDuplicate(vector<int>& nums) {
int n=nums.size();
int* counter=new int[n];
for(int i=0;i<n-1;++i){
++counter[i];
}
for(int i=0;i<n;++i){
if(int i>1) return true;
}
return false;
}
如你所见,我申请了一个堆空间'counter'; 所以,我想知道是否需要释放堆内存,如何释放堆内存?谢谢。
【问题讨论】:
-
if(int i>1)看起来不像有效的 C++。如果你的编译器毫无怨言地吃掉了它,就把它扔掉,换一个更好的。 -
++counter[i];不会像counter尚未初始化一样。请用minimal reproducible example红色How to Ask;除非您询问编译错误,否则代码应该编译。为什么要混合std::vector和 c 数组?是的,你需要delete [] counter; -
为什么不使用
std::vector<int> counter;? -
你已经在你的程序中使用了
vector,但是你没有在本来可以使用它的地方使用它:std::vector<int> counter (n);。然后所有的问题都解决了。 -
此外,即使您解决了所有问题,此代码也无法找到像
{1, 10 ,1}这样简单的重复项,除非您假设nums仅包含从0到的整数n-1.
标签: c++ heap-memory