LeetCode TwoSum(兩和)
阿新 • • 發佈:2019-01-10
LeetCode 每日一題
****LeetCode 每日一題:
給定一個整數陣列,返回兩個數字的索引,使它們相加到一個特定的目標。
您可以假設每個輸入都只有一個解決方案,而您可能不會使用相同的元素兩次。
列:給定nums = [2,7,11,15],target = 9,
因為nums [ 0 ] + nums [ 1 ] = 2 + 7 = 9,
返回[ 0,1 ]。**
public static void main(String[] args) {
//int[] num = new int[] {150,24,79,50,88,345,3};
//int[] num = new int[] {3,3};
//int[] num = new int[]{3,2,4};
//int[] num = new int[]{0,1,2,0};
int[] num = new int[] {230,863,916,585,981,404,316,785,88,12,70,435,384,778,887,
755,740,337,86,92,325,422,815,650,920,125,277,336,221,847,168,23,677,61,
400,136,874,363,394,199,863,997,794,587 ,124,321,212,957,764,173,314,422,
927,783,930,282,306,506,44,926,691,568,68,730,933,737,531,180,414,751,28,
546,60,371,493,370,527,387,43,541,13,457,328,227,652,365,430,803,59,858,
538,427,583,368,375,173,809,896,370,789};
int target = 666;
if(num.length < 3 ) {
if(num[0] + num[1] == target) {
System.out.print("0 1");
}
}else{
int[] twoSum = twoSum(num,target);
for (int i = 0; i < twoSum.length ; i++) {
if(twoSum[0] == twoSum[1]) {
throw new IllegalArgumentException ("No two sum solution");
}
System.out.print(twoSum[i]+" ");
}
}
}
public static int[] twoSum(int num[],int target) {
int temp = num.length;
if(num.length > 5) {
temp = num.length - 1 ;
}
int q = 0;
int e = 0;
for (int i = 0; i < temp ; i++) {
for (int j = i+1; j < temp; j++) {
//先判斷是否等於這個值
if(num[i] + num[j] == target ) {
q = num[i];
e = num[j];
}
}
//找到第一個 繼續找下一個
if(num[i] == q) {
q = i;
continue;
}
//找到第二個直接中斷迴圈
if(num[i] == e) {
e = i;
break;
}
}
return new int[] {q,e};
}
大家有沒有更好的思路,讓程式執行更快一點呢?