算法学习入门Day2_Leetcode_1 两数之和

简介: 算法学习入门Day2_Leetcode_1 两数之和

歌曲《平凡的一天》下面有条热评是这样说的:“小时候想过金碧辉煌灿烂的一生,长大后,平凡简单地过一生却那么难。云也轻,风也淡,没有牵绊、平凡的一天,我愿意用一切去交换。”

Leetcode原题

1.两数之和

20200401134307494.png

思路

本题中,操作数组就一个nums,实现的目的是寻找数组中能相加等于目标值的两个数的下标。

方法一 枚举法

双层循环遍历数组中的元素,找到2个能相加等于目标值的数就返回下标。

public class Solution {
    public int[] twoSum(int[] nums, int target){
        int temp[] =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){
                      temp[0]=i;
                      temp[1]=j;
                  }
             }
         }
         return temp;
    }
}

这种方法很容易想到,也很容易理解,但是该方法时间复杂度为O(N的2次方)。 我们需要减少一些时间复杂度,于是便有了第2个方法。

方法二 利用hashMap

方法一中对于每一个nums[i]都要再花费时间遍历剩下的元素来寻找target - nums[i],这就导致了最终O(n^2) 的时间复杂度,这就促使我们思考:我们用目标值tagrger减去每个数组元素nums[i]得出的值的时候,要是直接能判断该值在数组中存不存在,若是存在直接返回下标不就好了嘛。我们于是把目光投向了哈希表这一数据结构。

步骤:

  1. 建立一个初始长度为n-1的哈希表;
  2. 遍历数组中的元素
  3. 对任意一个元素,若target - nums[i]在哈希表中,则直接返回。
  4. 若不存在,若target - nums[i]t不在哈希表中,则将这个元素放入哈希表;
  5. 遍历完成后,若没有符合条件的两数,则返回空数组
/* 方法2  使用哈希表*/
public int[] twoSum(int[] nums, int target){
    Map<Integer,Integer> map = new HashMap<Integer,Integer>(nums.length-1);
    for (int i=0;i<nums.length;i++){
        int n= target-nums[i]; //
        if(map.containsKey(n)){
            return new int[]{i,  map.get(n)};
        }
        map.put(nums[i],i);//遍历集合中的数存放到hashmap集合中
    }
    return new int[]{};
}

提交测试

20200401134307494.png

oh,yeh 还是辣么滴丝滑 雀氏润~~~~

因为目前个人算法能力有限,有更好的方法的小伙伴可以在评论区留言分享,大家一起共同进步。

有兴趣的老爷,还可以关注我的公众号【一起收破烂】,回复【006】获取2022最新java面试资料以及简历模型120套哦~

相关文章
|
1月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
1月前
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】基于多轮课程学习的大语言模型蒸馏算法 TAPIR
阿里云人工智能平台 PAI 与复旦大学王鹏教授团队合作,在自然语言处理顶级会议 EMNLP 2024 上发表论文《Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning》。
|
1月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
1月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找习题精讲等具体详解步骤以及举例说明
|
1月前
|
机器学习/深度学习 算法 Python
机器学习入门:理解并实现K-近邻算法
机器学习入门:理解并实现K-近邻算法
35 0
|
1月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之王道第2.3章节之线性表精题汇总二(5)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
IKU达人之数据结构与算法系列学习×单双链表精题详解、数据结构、C++、排序算法、java 、动态规划 你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
下一篇
DataWorks