LeetCode热题100(一)—— 1.两数之和

LeetCode热题100(一)------ 1.两数之和

题目描述

复制代码
给定一个整数数组 nums 和一个整数目标值 target,
请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
你可以按任意顺序返回答案。
示例 1:
        输入:nums = [2,7,11,15], target = 9
        输出:[0,1]
        解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
        输入:nums = [3,2,4], target = 6
        输出:[1,2]
示例 3:
        输入:nums = [3,3], target = 6
        输出:[0,1]
提示:
        2 <= nums.length <= 104
        -109 <= nums[i] <= 109
        -109 <= target <= 109
        只会存在一个有效答案
进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗?

代码实现

java 复制代码
// 思路一:双循环
class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] result = new int[2];
        for(int i=0; i<nums.length; i++)
            for(int j=i+1; j<nums.length; j++){
                if((nums[i]+nums[j])==target){
                    result[0] = i;
                    result[1] = j;
                }
            }
        return result;
    }
}
// 思路二:哈希表
class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            int num = target - nums[i];
            if (map.containsKey(num)) {
                return new int[]{i, map.get(num)};
            }
            map.put(nums[i], i);
        }
        return null;
    }
}

思路解析

  1. 输入:整数数组和目标值int[] nums, int target
  2. 输出:两个元素下标 [i, j]nums[i] + nums[j] = target
  3. 思路一:双层循环
    • 时间复杂度: O ( n 2 ) O(n^2) O(n2)
    • 空间复杂度: O ( 1 ) O(1) O(1)
  4. 思路二:哈希表
    • 时间复杂度: O ( n ) O(n) O(n)
    • 空间复杂度: O ( n ) O(n) O(n)

相关推荐
Tanecious.29 分钟前
初阶数据结构--排序算法(全解析!!!)
数据结构·算法·排序算法
hu_yuchen2 小时前
C++:Lambda表达式
开发语言·c++·算法
烨然若神人~2 小时前
算法训练营第五天 | 454.四数相加II\ 383. 赎金信\15. 三数之和\ 18. 四数之和
算法
一只鱼^_2 小时前
牛客周赛 Round 91
数据结构·c++·算法·数学建模·面试·贪心算法·动态规划
啊阿狸不会拉杆2 小时前
人工智能数学基础(三):微积分初步
人工智能·python·算法·数学建模
2401_858286113 小时前
CC52.【C++ Cont】滑动窗口
开发语言·数据结构·c++·算法·leetcode·滑动窗口
mvufi4 小时前
day31 第八章 贪心算法 part05
算法·贪心算法
珊瑚里的鱼4 小时前
第一讲 | 算法复杂度
c语言·开发语言·数据结构·笔记·算法·visualstudio·visual studio
啊阿狸不会拉杆4 小时前
人工智能数学基础(四):线性代数
人工智能·python·数学·算法·机器学习
玖剹5 小时前
矩阵区域和 --- 前缀和
数据结构·c++·算法·leetcode·矩阵·动态规划·1024程序员节