首页 > 代码库 > Two Sum
Two Sum
1.hashMap方法O(n)空间换时间
public class Solution { public int[] twoSum(int[] numbers, int target) { HashMap<Integer,Integer> hash=new HashMap<Integer,Integer>(); int ans[]=new int[2]; for(int i=0;i<numbers.length;i++) { if(hash.containsKey(target-numbers[i])) { ans[0]=hash.get(target-numbers[i])+1; ans[1]=i+1; return ans; } else hash.put(numbers[i],i); } return ans; }}
2. 排序后获取两个值
class node implements Comparable<node>{ int x; int y; public int compareTo(node n) { return this.x-n.x; } public node(int x,int y) { this.x=x; this.y=y; }}public class Solution { public int[] twoSum(int[] numbers, int target) { node n[]=new node[numbers.length]; for(int j=0;j<numbers.length;j++) { n[j]=new node(numbers[j],j+1); } Arrays.sort(n); int ans[]=new int[2]; int low=0; int high=numbers.length-1; while(low<high) { int sum=n[low].x+n[high].x; if(sum==target) { ans[0]=n[low].y; ans[1]=n[high].y; if(n[low].y>n[high].y) { ans[0]=n[high].y; ans[1]=n[low].y; } break; } else if(sum>target) high--; else low++; } return ans; }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。