0
点赞
收藏
分享

微信扫一扫

Day1 两数之和

两数之和 https://leetcode-cn.com/problems/two-sum/


Java算法

package sj.shimmer.algorithm;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by SJ on 2021/1/25.
 */
class D1 {
    public static void main(String[] args) {
        int[] nums = new int[]{3, 2, 4};
        int target = 6;
        int[] results = twoSum(nums, target);
        for (int i = 0; i < results.length; i++) {
            System.out.println(i + "=" + results[i]);
        }
    }
    /**
     * 用HashMap来存储 index 和补全target需要的int值,在遍历过程中,添加之前先查询有没有补全值相等的数据,有表示找到,返回这两个下标
     * @param nums
     * @param target
     * @return
     */
    public static int[] twoSum(int[] nums, int target) {
        if (nums == null || nums.length < 2) {
            return nums;
        }
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
                if (entry.getValue() == nums[i]) {
                    return new int[]{entry.getKey(), i};
                }
            }
            int value = target - nums[i];
            map.put(i, value);
        }
        return nums;
    }
}

官方解

  1. 暴力枚举
    比较每一个数x,寻找是否存在target-x
  2. 哈希表,即我采用的方法,但官方使用差值作为key,下标作为value
举报

相关推荐

leetcode DAY1 两数之和

1、两数之和

【LeetCode】1两数之和

1.两数之和

LeetCode 1 两数之和

1. 两数之和

Leetcode 1:两数之和

LeetCode-1-两数之和

0 条评论