力扣-两数之和

news2024/10/7 14:28:08

文章目录

    • 题目
    • 题解
      • 方法1-暴力
      • 方法2-哈希

题目

原题链接:两数之和

在这里插入图片描述

题解

方法1-暴力

我最先想到的方法就是暴力,两层for循环,也能通过。(拿到算法题在没有思路的时候暴力就是思路,哈哈哈)

public class T1 {
    public static int[] twoSum(int[] nums, int target) {
        for (int i = 0; i < nums.length; i++) {
            for (int j = i+1; j < nums.length; j++) {
                if(nums[i]+nums[j]==target){
                    return new int[]{i,j};
                }
            }
        }
        return null; //这行代码没用  不写不行 随便返回一个数组即可
    }
    public static void main(String[] args) {
        int[] nums = {2,7,11,15};
        int target = 9;
        int[] res = twoSum(nums, target);
        System.out.println(Arrays.toString(res));
    }
}

方法2-哈希

在这里插入图片描述


public class T1 {
    public static int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if(map.containsKey(target-nums[i])){
                return new int[]{i, map.get(target-nums[i])};
            }
            map.put(nums[i],i);
        }
        return null;
    }
    public static void main(String[] args) {
        int[] nums = {2,7,11,15};
        int target = 9;
        int[] res = twoSum(nums, target);
        System.out.println(Arrays.toString(res));
    }
}

使用哈希表:

  • 使用HashMap来存储数组中的每一个数和它的索引。
  • 在遍历数组时,对于每个数,计算其补数(即target - nums[i]),并检查这个补数是否在哈希表中。
  • 如果补数存在,直接返回它的索引和当前数的索引

可能刚开始接触有点疑惑。
用两个for,可能更容易看懂,时间复杂度不变O(n)

    public static int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            map.put(nums[i],i);
        }
        for (int i = 0; i < nums.length; i++) {
            if(map.containsKey(target-nums[i])){
                return new int[]{i, map.get(target-nums[i])};
            }
        }
        return null;
    }

打算现在开始坚持平均每天至少一道算法题,写出自己的做题思路想法,欢迎你们指点,我也喜欢和你们交流,多交流可以让自己有更深的理解,开阔自己的思维。多刷算法题可以锻炼自己编程思维,编程能力。


❤觉得有用的可以留个关注❤

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1856912.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【源码】含70演示高转化率Magento2外贸时装女装跨境电商模板V1.2.2

MagMog是下一代最高转化率和可扩展的跨境电商Magento2主题&#xff0c;让您几乎可以立即上手。这是一个终极解决方案&#xff1a;主题附带一系列电子商务功能&#xff0c;可以启用您商店的隐藏功能&#xff0c;并且您无需支付任何额外费用。 100% 免费。 MagMog从定制设计到内…

华为HDC开发者大会鸿蒙进展超预期

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 在数字化浪潮的推动下&#xff0c;华为鸿蒙系统&#xff08;HarmonyOS&#xff09;以其革命性的创新&#xff0c;引领着全球科技的新趋势。2024…

【科技前沿】电子设计新贵SmartEDA:为何它引领行业风潮?

在当今这个电子科技日新月异的时代&#xff0c;电子设计工具如同设计师的魔法棒&#xff0c;不断推动着产品创新的速度。而近期&#xff0c;一款名为SmartEDA的电子国产设计仿真软件异军突起&#xff0c;成为了行业内的新宠。那么&#xff0c;SmartEDA究竟有何过人之处&#xf…

智能客服到个人助理,国内AI大模型如何改变我们的生活?

引言 随着人工智能&#xff08;AI&#xff09;技术的高速发展&#xff0c;AI大模型越来越多地出现在我们的日常生活和工作中。国内的AI大模型在过去几年里取得了显著的进展&#xff0c;不少独创的技术点和实际应用令人瞩目。 那么&#xff0c;国内的AI大模型有哪些独创的技术…

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其…

根据正则表达式查找字符串中第一次出现的一个或多个连续数字并返回起止位置re.rearch

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 根据正则表达式 查找字符串中 第一次出现的 一个或多个连续数字 并返回起止位置 re.rearch [太阳]选择题 根据给定的Python代码&#xff0c;哪个选项是正确的&#xff1f; import re patte…

csp 2023 入门级题解(上)

csp 2023 入门级题解 上 第一题第二题第三题结构体联合体 第四题第五题第六题第7题第八题 第一题 unsigned是指无符号,用于int类型,是指自然数. const是定义常量,定义后的值不可修改. static是将系统栈中的变量放入内存,可以让其他程序调用 答案是c 第二题 答案d 第三题 s…

PowerToys常用工具安装使用

1、上个链接&#xff1a; Release Release v0.81.1 microsoft/PowerToys GitHub 2、看一下界面 3、我们看一下颜色选择器&#xff0c;经常会用到 winshiftc可以启用。 屏幕也可以直接取色。还是比较方便的。 直接复制&#xff0c;就可以了。

Spring Boot集成Redisson

文章目录 Spring Boot集成Redisson1. Redisson概述2. Redission作用3. 集成Redission前提&#xff1a;步骤 1: 添加依赖步骤 2: 配置Redisson 4. 结论 Spring Boot集成Redisson 1. Redisson概述 Redisson是一个在Redis基础上实现的Java驻内存数据网格&#xff08;In-Memory D…

LLM之表格理解任务-文本模态

这一章我们聊聊大模型表格理解任务&#xff0c;在大模型时代主要出现在包含表格的RAG任务&#xff0c;以及表格操作数据抽取文本对比等任务中。这一章先聊单一的文本模态&#xff0c;既你已经通过OCR或者多模态等方式从PDF或者图片中获取了表格的文本数据。和前文相同&#xff…

开放式耳机哪个品牌最好?五大必看开放式耳机推荐2024

想要购买开放式耳机&#xff0c;但面对众多品牌和型号&#xff0c;你是否感到无从下手&#xff1f;别担心&#xff0c;作为耳机发烧友和测评专家&#xff0c;我为大家带来了几款热门开放式耳机的横向对比。从音质、设计、功能等方面进行详细对比&#xff0c;让你一目了然地了解…

受用一生的三种顶级思维

斯坦福大学心理学教授卡罗尔德韦克在《终身成长》中提到&#xff1a; 决定人与人之间差异的&#xff0c;不是天赋&#xff0c;不是勤奋程度&#xff0c;而是思维模式。 在许多情况下&#xff0c;拥有恰当的思维方式&#xff0c;甚至比单纯的努力更加关键。 普通的人改变结果…

贺尔碧格流量阀比例放大器PSR2BE10P25、PSR2BE10P30、PSR2BE10P25

PSR2BE04N06、PSR2BE04P10、PSR2BE04P06、PSR2BE04N10、PSR2BE10N12、PSR2BE10P25、PSR2BE10P30、PSR2BE10P25、PSR3BE10N25、PSR3BE10P30、PSR3BE10P12贺尔碧格HOERBIGER液压比例流量阀由比例电磁铁和流量阀组合而成&#xff0c;利用输入的电信号来改变节流阀的开度&#xff0…

适用于 Android 的 几种短信恢复应用程序

Android 设备上的短信丢失可能由于多种原因而丢失&#xff0c;例如意外删除、恢复出厂设置、系统崩溃或病毒攻击。是否有应用程序可以恢复 Android 上已删除的短信&#xff1f;幸运的是&#xff0c;有几款短信恢复应用程序可以扫描您的 Android 手机并从内存或 SIM 卡中检索已删…

手机照片怎么恢复?3个方法,从灾难中崛起

已经成为了我们随身携带的必备品。而在这些小巧玲珑的设备中&#xff0c;存储着我们大量的个人回忆和重要资料。其中&#xff0c;手机拍摄的照片更是承载着我们的欢笑、泪水、成长与经历&#xff0c;但它们会因为意外从此消失。 面对这样的困境&#xff0c;我们是否只能无奈接…

邮件群发推送的方法技巧?有哪些注意事项?

邮件群发推送的策略如何实现&#xff1f;邮件推送怎么评估效果&#xff1f; 电子邮件营销是现代企业进行推广和沟通的重要工具。有效的邮件群发推送不仅能提高客户参与度&#xff0c;还能促进销售增长。AokSend将探讨一些关键的邮件群发推送方法和技巧&#xff0c;以帮助企业优…

安装虚拟环境

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Flask依赖两个外部库&#xff1a;Werkzeug和Jinja2。Werkzeug是一个WSGI&#xff08;在Web应用和多种服务器之间的标准 Python 接口&#xff09;工具…

JavaWeb系列十六: jQuery初步入门

跟老韩-JavaScript开发利器之jQuery 1.1 原理示意图1.2 快速入门1.2 什么是jquery对象1.3 dom对象转jQuery对象1.4 jQuery对象转dom对象 jQuery是一个快速的, 简洁的javaScript库, 使用户能更方便地处理HTML, css, dom…提供方法, events, 选择器, 并且方便地为网站提供AJAX交互…

TensorRT-LLM加速框架的基本使用

TensorRT-LLM是英伟达发布的针对大模型的加速框架&#xff0c;TensorRT-LLM是TensorRT的延申。TensorRT-LLM的GitHub地址是 https://github.com/NVIDIA/TensorRT-LLM 这个框架在0.8版本有一个比较大的更新&#xff0c;原先的逻辑被统一了&#xff0c;所以早期的版本就不介绍了…

爬虫阶段思考

内容&#xff1a;写这篇文章是因为最近帮同学改了很多的爬虫代码&#xff0c;感触良多。 我用豆瓣为例&#xff0c;并不是不会用别的&#xff0c;而是这个我个人感觉最经典。然后还会写我遇到的一些问题以及解决方法。 首先&#xff0c;我们得先知道怎样爬取。我用的scrapy框…