zoukankan      html  css  js  c++  java
  • 两数之和

    给定整数数组,如果有两个数之和是给定的数,那么返回两个数的下标。

    每组输入只有一个解,同一个数不能用两次

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

    因为nums[0]+nums[1]=9

    返回[0,1]

    我的答案:

    public class Solution {
        public int[] twoSum(int[] nums, int target) {
            int[] res = new int[2];
            for(int i = 0;i<nums.length;i++){
                for(int j = 0;j<nums.length;j++){
                    if(nums[i]+nums[j]==target){
                        if(i==j)continue;
                        res[0] = i;
                        res[1] = j;
                        return res;
                    }
                }
            }
            return res;
        }
    }

    看了别人优秀的答案:

    public class Solution {
        public int[] twoSum(int[] nums, int target) {
            int[] result = new int[2];
            Map<Integer, Integer> map = new HashMap<Integer, Integer>();
            for (int i = 0; i < nums.length; i++) {
                if (map.containsKey(target - nums[i])) {
                    result[1] = i;
                    result[0] = map.get(target - nums[i])-1;
                    return result;
                }
            map.put(nums[i], i+1);
            }
        return result;
        }
    }

    使用HashMap,使的效率更高。

  • 相关阅读:
    ROC曲线
    数学建模的时间表和分工
    找寻子串
    被7整除
    Java中BufferedReader和scanner的对比
    机器学习降维方法
    梯度下降法
    天池大赛
    统一认证系统(三)
    软件设计方案
  • 原文地址:https://www.cnblogs.com/LoganChen/p/6671038.html
Copyright © 2011-2022 走看看