1. 程式人生 > 其它 >Java中陣列難點,插入新資料/刪除資料

Java中陣列難點,插入新資料/刪除資料

技術標籤:面試C++

題目:

給定一個包括n 個整數的陣列nums和 一個目標值target。找出nums中的三個整數,使得它們的和與target最接近。返回這三個數的和。假定每組輸入只存在唯一答案。

示例:

輸入:nums = [-1,2,1,-4], target = 1
輸出:2
解釋:與 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。

注意:

3 <= nums.length <= 10^3
-10^3 <= nums[i] <= 10^3
-10^4 <= target <= 10^4

方案一:暴力解法(竟然沒有超時。。。)

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        if (nums.size() < 3) {
            return 0;
        }
        int sum = 0;
        int flag = 0;
        for (int i = 0; i < nums.size() - 2; i++) {
            for(int j = i+1; j < nums.size() - 1; j++) {
                for (int k = j+1; k < nums.size(); k++) {
                    int temp = nums[i] + nums[j] + nums[k];
                    if (flag == 0 || abs(temp - target) < abs(sum - target)) {
                        sum = temp;
                        flag = 1;
                    }
                }
            }
        }
        return sum;
    }
};

時間複雜度O(n^3)

空間複雜度O(1)

方案二: