当前位置: 首页 > article >正文

【leetcode hot 100 1】两数之和

一、暴力解法:时间复杂度为O(n^2)

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int i=0;
        int j=0;
        for(i=0; i<nums.length; i++){
            for(j=i+1; j<nums.length; j++){
                if(nums[i]+nums[j] == target){
                    int output[] = {i,j};
                    return output;
                }
            }
        }
        int output[] = {i,j};
        return output;
    }
}

注意:

  • length计算数组长度
  • 数组定义是{},而不是[]

二、HashMap解法:用一个 HashMap 来记录数组中的每一个元素,元素的索引作为哈希表的 key,元素本身作为 value,当发现target - i在哈希表中存在时,就可以直接返回这两个数的索引了。

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer,Integer> map =new HashMap<>();
        // 遍历数组的同时,将已经遍历的数组放入hashmap中
        for(int i=0; i<nums.length; i++){
            int complement = target - nums[i];
            // 在已经遍历的数组中找complement,找到则complement+nums[j]=target
            if (map.containsKey(complement)){
                return new int[]{map.get(complement),i};
            }
            // 没找到complement,加入hashmap
            map.put(nums[i],i);
        }

        throw new IllegalArgumentException("没找到");
    }
}

注意:

  • 在HashMap中,查找某一个key,使用函数contaisKey(),此处contain后有s
  • HashMap加入数据的函数为put(),而不是set()
  • 找不到数据时,没有返回值,抛出IllegalArgumentExceprion()异常

http://www.kler.cn/a/561780.html

相关文章:

  • 钉钉合同审批对接腾讯电子签,实现合同全流程自动化管理
  • 【删边问题——Tarjan求割边】
  • 宿主机的 root 是否等于 Docker 容器的 root?
  • Ajax数据采集与分析详解
  • 开源分布式存储系统在云原生数据库领域的实践与应用
  • 自定义提交按钮触发avue-form绑定的submit事件
  • AI前端开发:ScriptEcho如何降低编程培训学习成本
  • python绑定udp时使用127.0.0.1作为ip,无法sendto,报错Invalid argument
  • 无限宽度神经网络的神经正切核(Neural Tangent Kernel, NTK)
  • 多线程进阶 : 八股文面试题 一 [Java EE 多线程 锁和死锁相关问题]
  • vscode设置自动换行
  • 【WordPress】发布文章时自动通过机器人推送到钉钉
  • Pi币今日成交价格飙升,XBIT去中心化交易所助力新浪潮
  • MySQL知识
  • vue3.0将后端返回的word文件流转换为pdf并导出+html2pdf.js将页面导出为pdf
  • keil中出现Error_Handler错误的解决方法
  • 云计算模型和边缘计算模型
  • ubuntu 源码编译ffmpeg
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter23-JSON
  • 深入解析 synchronized 锁升级:从偏向锁到重量级锁的设计哲学