LeetCode第一题【两数之和】

一.前言

 一直觉得自己的代码能力不是很强,也想利用这段时间好好提升一下自己的算法和编程能力~今天是打卡第一天,希望自己能坚持下去吧~

二.题目     

两数之和:

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

三.解答

使用c语言解题:

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target) { 
    for(int i=0;i<numsSize;i++){
        for(int j=i+1;j<numsSize;j++){
           if(nums[i]+nums[j]==target){
               int* a=malloc(2*sizeof(int));
               a[0]=i;
               a[1]=j;
               return a;
           }
        }
    }
    return "错误";
}

 注意 :1.c语言中获取数组长度方法,sizeof(数组名);

             2.c语言中动态分配内存的方法 ,malloc(n*sizeof(类型));

使用java解题:

class Solution {
    public int[] twoSum(int[] nums, int target){
        for(int i=0;i<nums.length;i++){
            for(int j=i+1;j<nums.length;j++){
                if(nums[i]+nums[j]==target){
                    int[] a={i,j};
                    return a;
                }
            }
        }
        throw new IllegalArgumentException("No two sum solution");
    }
}

注意:手动抛出异常方式,throw new IllegalArgumentException("No two sum solution");

猜你喜欢

转载自blog.csdn.net/beijixing3940/article/details/81432907