Two Sum
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].
基础 复杂度O(n^2)
dclass number1{ public static int [] twoSum (int []nums,int target){ int []a=new int [10]; ok1: for(int i=0;i<nums.length;i++){ for(int j=0;j<nums.length;j++){ if(i==j)continue; if(nums[i]+nums[j]==target){ a[0]=i; a[1]=j; } } } return a; } public static void main(String[] args) { int a[]={2,7,22,25}; int b=9; System.out.print( twoSum(a,b)); } }
优化代码
import java.util.Hashtable; class number1p{ public static int []twoSum(int []numbers,int target){ int []a=new int [2]; Hashtable <Integer,Integer>nums=new Hashtable<Integer,Integer>(); for(int i=0;i<numbers.length;i++){ Integer n=nums.get(numbers[i]); if(n==null) nums.put(numbers[i],i); n=nums.get(target-numbers[i]); if(n!=null&&n<i){ a[0]=n; a[1]=i; return a; } } return a; } public static void main(String[] args) { } }
刚开始使用leetcode 希望以后能熟练运用