Two Sum III - Data structure design

public class TwoSum {
    /**
     * @param number: An integer
     * @return: nothing
     */
     
    private int[] nums = new int[20000];
    private int count = 0;
    
    public void add(int number) {
        nums[count++] = number;
        for (int i = count - 1; i > 0; --i) {
            if (nums[i - 1] <= nums[i]) break;
            int tmp = nums[i - 1];
            nums[i - 1] = nums[i];
            nums[i] = tmp;
        } 
    }

    /**
     * @param value: An integer
     * @return: Find if there exists any pair of numbers which sum is equal to the value.
     */
    public boolean find(int value) {
        if (count < 2) return false;
        int left = 0, right = count - 1;
        while (left < right) {
            int sum = nums[left] + nums[right];
            if (sum == value) return true;
            if (sum < value) {
                ++left;
            } else {
                --right;
            }
        }
        return false;
    }
}

最后更新于

这有帮助吗?