使用Java、C实现求两数之和

有人相爱,有人夜里开车看海,有人连LeetCode第一题都做不出来

总结:本来很简单的算法Java对于各位很好实现,主要被困在C语言实现上面忘记了C的格式以及给出的返回值的意思,下面来进行实现

Java版本:

 1 class Solution {
 2     public int[] twoSum(int[] nums, int target) {
 3        int[] result = new int[2];
 4 for(int i =0;i<nums.length-1;i++)
 5    for(int j =i+1;j<nums.length;j++){
 6     if(nums[i]+nums[j] == target){
 7        result[0] =i;
 8        result[1] = j;
 9        
10      }
11    
12   }
13 return result;
14     
15      }
16 }

Java解题思路很简单两个for循环 给新数组赋值返回即可,当然我的是比较笨的方法,还有许多简单方法欢迎大佬交流学习!!!

 

接下来看C语言的实现:

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

首先,太久没学C了 竟然不知道数组可以写成 * 震惊!!!

其次不知道里面的最后一个参数什么意思,竟然以为是要求返回的数组

下面依次介绍

int* nums:给定的数组
int numsSize:数组的大小
int target:给出的固定值
int* returnSiz:返回数组的大小

最后来看一下实现


欢迎交流!!!

 

posted @ 2021-04-12 16:20  贩卖人烟  阅读(177)  评论(0编辑  收藏  举报