2019年4月28日
目錄
題目兩數之和
解決
1)第一種方法:循環嵌套
2)第二種方法:(性能完善)
3)其他進階優化:(算法優化)
題目:兩數之和
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yM1IzN4YWY1MTZhdzY4YGZyYzX4UDM0QTM2IzLcdDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
class Solution {
public int[] twoSum(int[] nums, int target) {
}
}
解決
1)第一種方法:循環嵌套
package leetCode;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
public class twoSum {
public static int[] twoSum(int[] nums, int target){
for (int index = 0; index <= (nums.length -2) ; index++){
int firstNum = nums[index];
for (int index2 = index + 1;index2 <= nums.length -1; index2++){
int secondNum = nums[index2];
if (firstNum + secondNum == target){
ArrayList<Integer> result = new ArrayList<>();
result.add(index);
result.add(index2);
int[] d = new int[result.size()];
for(int i = 0;i<result.size();i++) {
d[i] = result.get(i);
}
return d;
}
}
}
return null;
}
public static void main(String[] args){
int test[] = {3,2,4};
int target = 6;
int[] result = twoSum(test, target);
System.out.println(JSONObject.toJSON(result));
}
}
性能消耗:
分析:
1.局部變量使用:firstNum、secondNum、result、d;無疑使用太多了;
2)第二種方法:(性能完善)
class Solution {
public int[] twoSum(int[] nums, int target) {
for (int index = 0; index <= (nums.length -2) ; index++){
for (int index2 = index + 1;index2 <= nums.length -1; index2++){
if (nums[index] + nums[index2] == target){
int d[] = new int[2];
d[0]=index;
d[1]=index2;
return d;
}
}
}
return null;
}
}
性能消耗: