Two sum-LeetCode(C语言实现)

梦里梦外; 2022-02-27 05:18 215阅读 0赞

今天用C写了LeetCode第一个题目,题目如下:

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

  1. Given nums = [2, 7, 11, 15], target = 9,
  2. Because nums[0] + nums[1] = 2 + 7 = 9,
  3. return [0, 1].

算法一句话概括就是从数组里面取2个数若和为9则返回下标。我用C写出来后却报错了。我把代码放在VC6.0上运行却是成功的,代码如下:

  1. /**
  2. * Note: The returned array must be malloced, assume caller calls free().
  3. */
  4. int* twoSum(int* nums, int numsSize, int target) {
  5. int *indice = (int*)malloc(2*sizeof(int));
  6. for(int i=0;i<=numsSize-1;i++){
  7. for(int j=0;j<=numsSize-1;j++){
  8. if((nums[i]+nums[j]==target)&(i!=j)){
  9. indice[1]=i;
  10. indice[0]=j;
  11. }
  12. }
  13. }
  14. return indice;
  15. }
  16. void main(void){
  17. int nums[4]={2,7,11,15},target=9,numsSize=4;
  18. int* p=twoSum(nums,numsSize,target);
  19. printf("[%d,%d]\n",p[0],p[1]);
  20. }

代码运行结果如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NDYzMTc1_size_16_color_FFFFFF_t_70

我提交后却是:

20190326213258345.png

后来发现与系统自带main冲突,思考了2下,突然灵光一现,去掉main函数提交不就行了:

  1. /**
  2. * Note: The returned array must be malloced, assume caller calls free().
  3. */
  4. int* twoSum(int* nums, int numsSize, int target) {
  5. int *indice = (int*)malloc(2*sizeof(int));
  6. for(int i=0;i<=numsSize-1;i++){
  7. for(int j=0;j<=numsSize-1;j++){
  8. if((nums[i]+nums[j]==target)&(i!=j)){
  9. indice[1]=i;
  10. indice[0]=j;
  11. }
  12. }
  13. }
  14. return indice;
  15. }

结果果不其然:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NDYzMTc1_size_16_color_FFFFFF_t_70 1

原来只需要写他定义好的函数就写了,打扰了。。。。。。。。。。。。

发表评论

表情:
评论列表 (有 0 条评论,215人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Mybatis框架-two

    1.DAO层代理开发(重点) DAO层代理开发要满足四个规范: 1.Mapper接口的全限定名和Mapper.xml的namespace一致 2.Mapper接口