和为s的两个数字

2022-05-24  本文已影响0人  曾大稳丶

题目链接 :https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/

image.png

题目解析

  1. 采用HashMap

复杂度分析
空间复杂度: O(N)。
时间复杂度: O(N)。

  1. 由于本题是一个排序数组,可以采用双指针的方式进行探寻达到降低空间复杂度的目的。左右指针分别指向头尾,如果相加大于目标值就右指针往左移,如果相加小于目标值则左指针向右移。
public int[] twoSum(int[] nums, int target) {
    int i = 0, j = nums.length - 1;
    while(i < j) {
        int s = nums[i] + nums[j];
        if(s < target) i++;
        else if(s > target) j--;
        else return new int[] { nums[i], nums[j] };
    }
    return new int[0];
}

复杂度分析
空间复杂度: O(1)。
时间复杂度: O(N)。

上一篇下一篇

猜你喜欢

热点阅读