LeetCode----Two Sum(兩個數的和)

一、題目名稱java

     Two Sum(兩個數的和)數組

二、題目地址code

https://leetcode.com/problems/two-sum/ci

三、題目內容leetcode

Given an array of integers, return indices of the two numbers such that they add up to a specific target.get

You may assume that each input would have exactly one solution.input

Example:
io

Given nums = [2, 7, 11, 15], target = 9,

Because nums[] + nums[] = 2 + 7 = 9,
return [0, 1].

題目大體意思:給定一個整型數組,返回它的其中兩個元素的下標,使得這兩個元素的和等於目標元素的值class

你能假設每一個輸入都能獲得精確的結果。循環

四、題目分析

首先,題目是在數組中找兩個元素的和等於目標元素,返回的倒是兩個元素的下標;從而能夠想到使用Map集合,由於map集合存儲數據是鍵值對的形式,即map集合的鍵存儲找到的元素,值存儲找到的元素的下標。

主要思路是:遍歷數組獲得數組中的每個元素,再判斷集合中是否包含該元素的鍵,

                       若是不包含:將目標元素減去該元素的差做爲鍵,該元素的下標做爲值存到集合中。

                        若是包含:在集合中找到這個元素做爲鍵所對應的值,並將這個值存到新建立的數組中做爲第一個元素。

                                        而後將這個元素的下標做爲第二個原素存到新建的數組中。

                                        而後break跳出循環。

主要代碼以下:

public int[] twoSum(int[] nums, int target) {

        int[]result = new int[2];

        HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();

        for(int i=0;i<nums.length;i++){

            if(hm.containsKey(nums[i])){

                result[0] = hm.get(nums[i]);

                result[1] = i;

                break;

            }else{

                hm.put(target-nums[i],i);

            }

        }

        return result;

    }
相關文章
相關標籤/搜索