【力扣热题100】[Java版]刷题笔记-1. 两数之和

题目: 1. 两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

你可以按任意顺序返回答案。

解题思路

目前有两种思路解决:

1、两个for循环数组,计算数据是否为目标值,当得到结果后直接跳出循环,返回结果。

2、利用HashMap存储数据和数组下标,先判断map中是否有targe-当前值的数据,有则返回结果,没有则继续循环。

这里第二种方法在时间和空间上比第一种更好

解题过程

第一种:

java 复制代码
class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] results = new int[2];
        boolean flag = false;
        // 循环判断
        for (int i = 0; i < nums.length; i++) {
            if (target > 0 && nums[i] > target) {
                continue;
            }
            if (target < 0 && nums[i] < target) {
                continue;
            }
            for (int j = 0; j < nums.length; j++) {
                if (i == j) {
                    continue;
                }
                if (nums[i] + nums[j] == target) {
                    results[0] = i;
                    results[1] = j;
                    flag = true;
                    break;
                }
            }
            if (flag) {
                break;
            }
        }
        return results;
    }
}

第二种:

java 复制代码
class Solution {
    public int[] twoSum(int[] nums, int target) {
        if(nums.length < 2) {
            return null; 
        }
        HashMap<Integer, Integer> map = new HashMap<>();
        int[] results = new int[2];
        for (int i = 0; i < nums.length; i++) {            
            // 判断map中是否有结果值
            if (map.containsKey(target - nums[i])) {
                results[0] = map.get(target - nums[i]);
                results[1] = i;
                break;
            }
            // 讲数据和下标存入map
            map.put(nums[i], i);
        }
        return results;
    }
}
相关推荐
做科研的周师兄31 分钟前
【机器学习入门】7.4 随机森林:一文吃透随机森林——从原理到核心特点
人工智能·学习·算法·随机森林·机器学习·支持向量机·数据挖掘
Sunsets_Red1 小时前
差分操作正确性证明
java·c语言·c++·python·算法·c#
QZ_orz_freedom1 小时前
学习笔记--文件上传
java·笔记·学习
摇滚侠1 小时前
Spring Boot 3零基础教程,整合Redis,笔记12
spring boot·redis·笔记
爱吃甜品的糯米团子1 小时前
Linux 学习笔记之 VI 编辑器与文件查找技巧
linux·笔记·学习
【杨(_> <_)】1 小时前
SAR信号处理重要工具-傅里叶变换(二)
算法·信号处理·傅里叶分析·菲涅尔函数
怎么没有名字注册了啊1 小时前
爬动的蠕虫
算法
取酒鱼食--【余九】1 小时前
机器人学基础(一)【坐标系和位姿变换】
笔记·算法·机器人·开源·机器人运动学·机器人学基础
晨非辰2 小时前
【面试高频数据结构(四)】--《从单链到双链的进阶,读懂“双向奔赴”的算法之美与效率权衡》
java·数据结构·c++·人工智能·算法·机器学习·面试
im_AMBER2 小时前
数据结构 03 栈和队列
数据结构·学习·算法