leetcode_Two Sum

来源:互联网 发布:mac chrome 导出插件 编辑:程序博客网 时间:2024/06/05 19:48

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].





package com.two.num;import java.util.HashMap;import java.util.Map;/* Question Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].*/public class Solution {/* * Time complexity : O(n^2) Space complexity : O(n) */public static int[] twoSum1(int[] nums, int target) {int[] indecies = new int[2];for (int i = 0; i < nums.length; i++) {for (int j = i + 1; j < nums.length; j++) {if (nums[j] == target - nums[i]) {return new int[] { i, j };}}}return indecies;}/* * Time complexity : O(n) Space complexity : O(n) */public static int[] twoSum2(int[] nums, int target) {Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (int i = 0; i < nums.length; i++) {map.put(nums[i], i);}for (int i = 0; i < nums.length; i++) {int complement = target - nums[i];if (map.containsKey(complement) && map.get(complement) != i)return new int[] { i, map.get(complement) };}throw new IllegalArgumentException("No two sum solution");}/* * Time complexity : O(n) Space complexity : O(n) */public static int[] twoSum3(int[] nums, int target) {Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {int complement = target - nums[i];if (map.containsKey(complement)) {return new int[] { map.get(complement), i };}map.put(nums[i], i);}throw new IllegalArgumentException("No two sum solution");}public static void main(String[] args) {// TODO Auto-generated method stubint[] test = { 3, 2, 4 };int target = 6;int[] indecies = twoSum2(test, target);for (int k = 0; k < indecies.length; k++) {System.out.println(indecies[k]);}}}

原创粉丝点击