使用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:返回数组的大小
最后来看一下实现
欢迎交流!!!