gpt4 book ai didi

c++ - LeetCode TwoSum 解决方案不起作用

转载 作者:行者123 更新时间:2023-11-30 05:44:48 42 4
gpt4 key购买 nike

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
int bins(int* p,int lo,int hi,int t)
{//BinarySearch
int mid=0;
int c=0;
if(lo<hi)
{
mid=(lo+hi)/2;
if(p[mid]==t) c=1;
else if(t>p[mid])
bins(p,mid+1,hi,t);
else if(t<p[mid])
bins(p,0,mid,t);
}
return c;
}

int main()
{
clrscr();
int target;
int k;
int count=0;
cout<<"Enter the number of elements:";
cin>>k;
int* numbers=new int(k);
cout<<"Enter the target element"<<endl;
cin>>target;
cout<<"Enter the elements:"<<endl;
for(int i=0;i<k;i++)
cin>>numbers[i];
int* nu=new int(k);
memset(nu,0,sizeof(int));
/*for(i=0;i<k;i++){
cout<<numbers[i]<<endl;
}*/
for(i=0;i<k;i++)
{
int bool=bins(nu,0,k,numbers[i]);
//printf("%d\n",bool);
if(bool)
{
count++;
}
else
{
int tg=target-numbers[i];
cout<<"targetval:"<<tg<<endl;
nu[i]=tg;
}
//bool?count++:(nu[i]=target-numbers[i]);
}
cout<<"Count is:"<<count<<endl;
getch();
return 0;
}

这是我在 leetcode 中为 TwoSum 问题编写的代码,而不是使用时间复杂度为 O(n) 的 HashMap 我使用了复杂度为 O(logn) 的二进制搜索我面临的问题是我给数组 numbers[i] 的输入只需要 3 个值,从那时起它存储垃圾值,即使在从控制台分配适当的输入之后也是如此该程序已在系统上的 Turbocompiler 上成功编译

最佳答案

int* numbers=new int[k];////allocates an array of k adjacent integers. (undefined values)

你正在为一个数组分配。检查符号。

您还使用关键字作为变量。(bool)。

你做了什么?

int *numbers=new int(k);////allocates an integer, set to k. (same syntax as constructors)

关于c++ - LeetCode TwoSum 解决方案不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29621581/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com