问题描述
- leetcode第一题java代码报错。求原因?
-
package com.hust.ali.test;
import java.util.*;/**
- 给定一个整数数组,发现两个数字,使得它们添加到一个特定的目标数。
- 函数twoSum应返回两个数字,使得它们加起来的目标,其中索引1必须小于索引2的所有。
- @author Cat
*
/
public class TwoNumSum {
/*- @param args
*/
public static void main(String[] args) {
int[] num = {0,4,3,0,6,9};
TwoNumSum ts = new TwoNumSum();
int[] result = ts.twoSum (num, 7);
System.out.println(result[0]+" " + result[1]);
}
public int[] twoSum (int[] numbers,int target){
IdentityHashMap hashNum = new IdentityHashMap();
Integer[] temp = new Integer[numbers.length];for(int i=0;i
temp[i] = new Integer(numbers[i]);
hashNum.put(temp[i] , i);
}
Arrays.sort(numbers);
Arrays.sort(temp);
int i = 0 , j = numbers.length - 1;
int[] result = new int[2];
while( i
if( numbers[i] + numbers[j] == target ){
result[0] = hashNum.get(temp[i])+1;
result[1] = hashNum.get(temp[j])+1;
break;
}else if (numbers[i] + numbers[j] > target ){
j--;
}else if(i < numbers.length-1){
i++;
}
}
Arrays.sort(result);
return result;
}
}
- @param args
解决方案
这是我写的Java代码,可以参考下
``
public class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
HashMap<Integer, Integer> t = new HashMap<Integer, Integer>();
for (int i = 0; i < nums.length; i++) {
t.put(nums[i], i);
}
for (int i = 0; i < nums.length; i++) {
int tmp = target - nums[i];
Integer index2 = t.get(tmp);
if (index2 != null) {
result[0]=i+1;
result[1]=index2+1;
if (result[0] < result[1]) {
break;
}
}
}
return result;
}
}
``
解决方案二:
import java.util.*;
/**
- 给定一个整数数组,发现两个数字,使得它们添加到一个特定的目标数。 函数twoSum应返回两个数字,使得它们加起来的目标,其中索引1必须小于索引2的所有。
- @author Cat
/
public class TwoNumSum {
/- @param args
*/
public static void main(String[] args) {
int[] num = { 0, 4, 3, 0, 6, 9 };
TwoNumSum ts = new TwoNumSum();
int[] result = ts.twoSum(num, 7);
System.out.println(result[0] + " " + result[1]);
}
public int[] twoSum(int[] numbers, int target) {
IdentityHashMap hashNum = new IdentityHashMap();
Integer[] temp = new Integer[numbers.length];
for (int i = 0; i < temp.length; i++) {
temp[i] = new Integer(numbers[i]);
hashNum.put(temp[i], i);
}
Arrays.sort(numbers);
Arrays.sort(temp);
int i = 0, j = numbers.length - 1;
int[] result = new int[2];
while (i != numbers.length) {
if (numbers[i] + numbers[j] == target) {result[0] = (Integer) hashNum.get(temp[i]) + 1; result[1] = (Integer) hashNum.get(temp[j]) + 1; break; } else if (numbers[i] + numbers[j] > target) { j--; } else if (i < numbers.length - 1) { i++; } } Arrays.sort(result); return result;
}
} - @param args