1. Two Sum

1刷

HashMap

Time complexity O(n), Space complexity: O(n)

public class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] res = {-1, -1};
        if(nums == null || nums.length == 0) return res;
        Map<Integer, Integer>map = new HashMap<>();
        for(int i=0; i<nums.length; i++){
            if(!map.containsKey(target - nums[i])){
                map.put(nums[i], i);
            }
            else{
                res[0] = i;
                res[1] = map.get(target - nums[i]);
                return res;
            }
        }
        return res;
    }
}

Binary Search

或者可以先sort数组,再用双指针找target - numbers[i]。这样的话Time Complexity 应该是是O(nlogn), Space Complexity是O(n),就是时间复杂度换空间复杂度。 要注意sort之后原数组的index也会改变,要找到好的方法保存原数组的index。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容