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

每日一题一一LeetCode1. 两数之和 - 力扣(LeetCode)

每日一题一一LeetCode1. 两数之和 - 力扣(LeetCode)

1. 两数之和 - 力扣(LeetCode)

本题的要求是给你一个数组,然后让你从中找出两个值,他们的和为target,然后返回这两个数的下标

暴力版本:

直接双层遍历,取两个不同的数组中的元素相加为target,直接返回它的下标。

C++版本:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int i,j;
        for(i=0;i<nums.size()-1;i++){
            for(j=i+1;j<nums.size();j++){
                if(nums[i]+nums[j]==target){
                    return {i,j};
                }
            }
        }
        return {i,j};
    }
};

Java版本:

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

优化版本:

我们可以创建一个Hash表,遍历nums数组,每次询问Hash表中是否存在(target-nums[i]),如果存在,直接返回下标值即可。如果不存在就当前元素为键,其对应的下标为值放入哈希表中。

C++版本

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int,int> map;
        vector<int> res;
        for(int i=0;i<nums.size();i++){
            if(map.find(target-nums[i])!=map.end()){
                res.push_back(i);
                res.push_back(map[target-nums[i]]);
                return res;
            }
            map[nums[i]]=i;
        }
        return res;
    }
};

java版本

import java.util.Arrays;
import java.util.HashMap;

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

相关文章:

  • 【算法】数组、链表、栈、队列、树
  • uni-app打包h5并部署到nginx,路由模式history
  • 【QT】认识 QT 安装 QT 相关软件
  • HTTP 协议中常见的错误状态码(详细介绍)
  • grad_traj_optimization 开源项目
  • Claude 3 7:AI新王者的诞生?✨
  • 06_docker容器的数据卷管理
  • 2025-03-13 学习记录--C/C++-PTA 练习2-15 求简单交错序列前N项和
  • 【商城实战(29)】解锁消息通知功能,打造极致用户体验
  • element-plus文档解析之Layout布局(el-row,el-col)
  • Vue前端页面实现搜索框的重置
  • PHP 过滤器
  • idea cpu干到100%的解决方法?
  • 如何通过修改hosts文件、启动Apache服务器、修改httpd.conf文件、配置虚拟主机、创建站点目录和文件等步骤来配置虚拟主机并发布PHP站点
  • 【Linux】进程间通信:命名管道
  • Spring(一)
  • Springboot 实用技巧 查缺补漏
  • 3dconvert-viewer.js SDK
  • AI赋能铁道安全巡检探索智能巡检新时代,基于YOLOv7全系列【tiny/l/x】参数模型开发构建铁路轨道场景下轨道上人员行为异常检测预警系统
  • vue通过click和shift实现连续多选功能
  • 网站建设与实现 文献综述/图片搜索
  • 用html5做的网站过程/西安做网站的公司
  • javaweb做商业网站/有趣的软文
  • 免费软件下载网站app/阿里云域名注册入口
  • 重生做二次元网站/搜索引擎关键词广告
  • 百度手机导航官方新版/seo专家是什么意思