LintCode【简单】56.两数之和 。代码及思路

这是我第一次在LintCode上刷题……以前在学校有刷过一点数据结构平台上的题,后来自己找其他oj,也没找到一个好看一点的……

这次加入了学校为比赛准备的寒假训练,才接触到了LintCode,界面啊做题感受啊简直太美好了!!!

因为第一次用,还是想墨迹一点感受。可以选择的语言有,python我学的是3,这次做题选择了好久没练的java,居然连怎么定义数组都忘了QAQ。


题目要求很简单

给一个整数数组,找到两个数使得他们的和等于一个给定的数 target

你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到 n-1

 注意事项

你可以假设只有一组答案。

样例

给出 numbers = [2, 7, 11, 15], target = 9, 返回 [0, 1].


思路

首先想到的是二重循环,虽然耗时长了点但是可以很快写出来。

遍历的时候要注意去除同一个数相加,要求的第一个下标要小于第二个下标。在函数结束之前也要加return a; ,不然会提示missing return statement。

附源码:

public class Solution {
    /*
     * @param numbers: An array of Integer
     * @param target: target = numbers[index1] + numbers[index2]
     * @return: [index1 + 1, index2 + 1] (index1 < index2)
     */
    public int[] twoSum(int[] numbers, int target) {
        // write your code here
        int[] a = new int[2];
        for(int i = 0; i < numbers.length; i++){
            for(int j = 0; j < numbers.length; j++){
                if(numbers[j] + numbers[i] == target && j != i){
                    if(i <= j){
                        a[0] = i;
                        a[1] = j;
                    }
                    else{
                        a[0] = j;
                        a[1] = i;
                    }
                    return a;
                }
            }
        }
        return a;
    }
}
其他思路以后再补充。

你可能感兴趣的:(LintCode)