LeetCode上的整数反转问题

#LeetCode上的两数之和问题
##自己作答的情况如下

// 
#define MaxSize 2048
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    int i=0;
    int hashlist[MaxSize];
    int * sum = (int *) malloc (sizeof(int) * 2);//自行释放,否则一直存在,intsum[2];函数结束,系统自动回收
    memset(hashlist,-1,sizeof(hashlist));
    
    for(i=0;i<numsSize;i++)
    {
       if(hashlist[(target - nums[i] + MaxSize) % MaxSize] != -1 )
        {
           sum[0] = hashlist[(target - nums[i] + MaxSize) % MaxSize];
           sum[1] = i;
           *returnSize = 2;
           return sum;
        }
        hashlist[(nums[i] + MaxSize) % MaxSize] = i;
    }
    *returnSize = 0;
    return sum;
}

侵删
##自己写的代码实在垃圾,就不贴出来了
###下面是是自己踩的坑,自己作为记录写下来

  • 开始使用的是数组类型,因为由系统自动销毁,所有报错,而malloc分配的空间在堆栈内,可以顺利返回

  • memset函数用于初始化数组

  • 开始没有考虑数据为负数

  • 开始自己想着先把hash表初始化然后再去判断 target-*nums

    • 然后如果被后面的值重复覆盖了的话就会丢失信息,而且无法查出3+3=6的这种组合
  • 一个礼拜以后回来再看看这个题目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值