LeetCode1-Two Sum

来源:互联网 发布:淘宝平板版下载 编辑:程序博客网 时间:2024/06/11 23:41

1. 题目描述

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

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].


2. 思路

思路1 暴力搜索法,遍历数组nums,然后遍历剩余元素,直到找到满足题意的两个下标。时间复杂度为O(n^2)。


思路2 ,为数组建立哈希表,遍历nums,在上剩余元素中查找target-nums[i],时间复杂度O(n)。

3. 代码

public int[] twoSum(int[] nums, int target) {List<Integer> resultList = new ArrayList<Integer>();Hashtable hash = new Hashtable(100, (float) 0.8);for (int i = 0; i < nums.length; i++) {hash.put(nums[i], i);}for (int i = 0; i < nums.length; i++) {Object object  =  hash.get(target - nums[i]);if (object != null && (Integer)object != i) {int t = (Integer)object;resultList.add(i);resultList.add((Integer)object);}}int[] result = {resultList.get(0),resultList.get(1)};return result;}


原创粉丝点击