天天看點

LeetCode刷題之旅(簡單-1):兩數之和

2019年4月28日

目錄

​​題目​​​​兩數之和​​

​​解決​​

​​1)第一種方法:循環嵌套​​

​​2)第二種方法:(性能完善)​​

​​3)其他進階優化:(算法優化)​​

題目:兩數之和

LeetCode刷題之旅(簡單-1):兩數之和
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));
    }
}      

性能消耗:

LeetCode刷題之旅(簡單-1):兩數之和

分析:

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;
    }
}      

性能消耗:

LeetCode刷題之旅(簡單-1):兩數之和

3)其他進階優化:(算法優化)