Two Sum - Less Or Equal

Given an array of integers, find how many pairs in the array such that their sum isless than or equal toa specific target number. Please return the number of pairs.

Example

Given nums =[2, 7, 11, 15], target =24. Return5. 2 + 7 < 24 2 + 11 < 24 2 + 15 < 24 7 + 11 < 24 7 + 15 < 25

Note

小于的话:

if (nums[left] + nums[right] <= target) {
    res += right - left;
    left++;
}

Code

public class Solution {
    /**
     * @param nums: an array of integer
     * @param target: an integer
     * @return: an integer
     */
    public int twoSum5(int[] nums, int target) {
        // write your code here
        // 2 7 11 15
        if (nums == null || nums.length < 2) {
            return 0;
        }
        Arrays.sort(nums);
        int res = 0;
        int left = 0, right = nums.length - 1;
        while (left < right) {
            if (nums[left] + nums[right] <= target) {
                res += right - left;
                left++;
            } else {
                right--;
            }
        }
        return res;
    }
}

Last updated