LeetCode 1. 两数之和

1. Two Sum

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

You can return the answer in any order.

Example 1:

**Input:**nums = [2,7,11,15], target = 9

Output: [0,1]

Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

Example 2:

**Input:**nums = [3,2,4], target = 6

Output:[1,2]

Example 3:

**Input:**nums = [3,3], target = 6

Output: [0,1]

Constraints:

  • 2 <= nums.length <= 10^4
  • -10^9 <= nums[i] <= 10^9
  • -10^9 <= target <= 10^9

Only one valid answer exists.

Follow-up: Can you come up with an algorithm that is less than O(n2) time complexity?

解法思路:

1、暴力求解

2、利用map集合的特性

java 复制代码
class Solution {
    public int[] twoSum(int[] nums, int target) {
        // 暴力求解,O(n^2)
        // int[] res = new int[2];
        // for (int i = 0; i < nums.length - 1; i++) {
        //     for (int j = i + 1; j < nums.length; j++) {
        //         if (nums[i] + nums[j] == target) {
        //             res[0] = i;
        //             res[1] = j;
        //             return res;
        //         }
        //     }
        // }
        // return new int[0];

        // O(n)
        // Map<Integer, Integer> map = new HashMap<>();
        // int[] res = new int[2];
        // for (int i = 0; i < nums.length; i++) {
        //     int anotherNum = target - nums[i];
        //     if (map.containsKey(anotherNum)) {
        //         res[0] = map.get(anotherNum);
        //         res[1] = i;
        //         return res;
        //     }
        //     map.put(nums[i], i);
        // }
        // return new int[0];

        // 优化下
        Map<Integer, Integer> map = new HashMap<>();
        int n = nums.length;
        for (int i = 0; i < n; i++) {
            int anotherNum = target - nums[i];
            if (map.containsKey(anotherNum)) {
                return new int[]{map.get(anotherNum), i};
            } else {
                map.put(nums[i], i);
            }
        }
        return null;
    }
}
相关推荐
灰阳阳20 分钟前
2022年蓝桥杯JavaB组 省赛 题目解析(含AC_Code)
java·职场和发展·蓝桥杯·省赛·超详解
皎味小行家27 分钟前
第三十二天|动态规划| 理论基础,509. 斐波那契数,70. 爬楼梯 ,746. 使用最小花费爬楼梯
java·数据结构·算法·leetcode·动态规划
小小宇宙中微子29 分钟前
DP动态规划基础题(Kadane算法)
算法·动态规划
橘子遇见BUG1 小时前
算法日记 26-27day 贪心算法
算法·贪心算法
tang13897641 小时前
机器学习(贝叶斯算法,决策树)
算法·决策树·机器学习
独自破碎E2 小时前
【2】猫眼娱乐后端开发面试题整理
算法·哈希算法·娱乐
tyler-泰勒3 小时前
C++: string(二)
数据库·c++·算法
打不了嗝 ᥬ᭄3 小时前
3步实现贪吃蛇
c语言·数据结构·c++·算法·链表
mmz12073 小时前
深搜复习(c++)
c语言·c++·算法
灼华十一3 小时前
算法编程题-golang语言协程池
算法·面试·golang