Java算法题:两数之和

2023-11-19

LeetCode原题:

给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列  ,请你从数组中找出满足相加之和等于目标数 target 的两个数。
示例 1:

输入:numbers = [2,7,11,15], target = 9
输出:[1,2]
解释:2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。

方法一:暴力遍历

我们使用双层for循环

代码如下:

public class Test {
    public static void main(String[] args) {
        int nums[]=new int[]{2,7,11,15};
        int[] array=twoSum(nums,9);
        for(int i=0;i<array.length;i++){
            System.out.print(array[i]);
        }
    }
    public static int[] twoSum(int[]nums,int target){
        for(int i=0;i<nums.length;i++){
            int sum=target-nums[i];
            for(int j=i+1;j<nums.length;j++){
                if(nums[j]==sum){
                    return new int[]{i+1,j+1};
                }
            }
        }
        return null;
    }

这种方法简单粗暴,但是时间复杂度高,不建议

方法二:使用双指针方法

思路:

*创建一个左指针,指向数组的第一个位置

*创建一个右指针,指向数组最后一个位置

*在while循环中,判断左右指针相加

                          *相加==target,返回下标

                          *相加<target,left++

                          *相加>target,right--;

代码如下:

public class Test {
    public static void main(String[] args) {
        int nums[]=new int[]{2,7,11,15};
        int[] array=twoSum(nums,9);
        for(int i=0;i<array.length;i++){
            System.out.print(array[i]);
        }
    }
    //双指针方法
    public static int[] twoIndex(int array[],int target){
        int left=0;
        int right=array.length-1;
        while(left<=right){
            if(array[left]+array[right]==target){
                return new int[]{left+1,right+1};
            }else if(array[left]+array[right]<target){
                left++;
            }else if(array[left]+array[right]>target){
                right--;
            }
        }
        return null;
    }

总结:双指针真好用~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java算法题:两数之和 的相关文章

随机推荐

  • java pager,Pager 分页设计

    分页是非常基础又重复度高的功能 不论是前台 后台 或是手机版都有分页的需求 这里介绍Pager及相关代码 Pager是分页数据的封装 必要时需要与其他分页对象适配 PageObject Pageable等 详见PagerUtil publi
  • IO输入溢出(转载+整理)

    gets 防止缓冲区溢出 描述了高水平的缓冲区溢出攻击 以及讨论了为什么缓冲区溢出是如此严重的安全性问题 本专栏文章的主题是 通过防御性编程保护代码不受缓冲区溢出攻击 我们将论及 C编程语言中的主要安全性陷阱 显示应该避免特殊构造的原因 以
  • Bad owner or permissions on /root/.ssh/config

    vmware centos 部署 hadoop集群 启动hadoop节点 报错Bad owner or permissions on root ssh config 原因 SSH关于公钥认证Permission denied的问题 不能直接
  • 安装好后如何查看mysql/apache/nginx/php安装参数

    查看mysql编译参数 cat usr local mysql bin mysqlbug grep CONFIGURE LINE 查看apache编译参数 cat apachehome build config nice 查看php编译参数
  • 《机器学习》二刷超详细笔记

    博主在4月学完西瓜书时 一头雾水 觉得还是一知半解 9月开学后上完了必修的 machine learning 课程 并且自己编程实现了多种机器学习算法和论文复现后 才对机器学习有一点了解 现在再次翻阅西瓜书 很多知识点看到都豁然开朗 所以出
  • Debian 某些程序无法使用中文输入法设置方法

    debian系统下发现某些程序不能写入中文 下面是我解决的方法 sudo apt get install fcitx frontend qt5 1 我们可以通过在命令行下输入 dpkg L fcitx frontend qt5 1 修改配置
  • 如何解决apt-get中Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify的问题

    在Ubuntu中用apt get安装软件 系统报出Unmet dependencies错误 Unmet dependencies Try apt fix broken install with no packages or specify
  • 【Python-Anaconda】在anaconda中创建、激活虚拟环境;在anaconda中所创建的虚拟环境中安装OpenCv;如何在jupter notebook中使用所创建的虚拟环境

    一 在anaconda中创建虚拟环境 1 为什么要创建虚拟环境 答 为了避免库依赖冲突 所以在安装pytorch tensflow等时最好创建虚拟环境进行安装 2 创建虚拟环境步骤 1 打开anaconda prompt 输入如下代码 co
  • 基于AJAX技术提高搜索引擎排名

    描述 嵌入在你的web页面中的导航元素能够降低你的搜索引擎评价排名并且降低你的网站的响应性能 本文作者想同你一起探讨如何使用AJAX技术来解决这两个问题 许多设计良好的web站点都包含大量的与实际内容相联系的可导航信息 用于导航的HTML标
  • 【C++】抽象类

    2023年8月25日 周五上午 目录 声明抽象类 抽象类的特点 举例说明 声明抽象类 要在C 中声明一个抽象类 要求类中至少有一个纯虚函数 在C 中 一个类如果包含至少一个纯虚函数 那么这个类就被称为抽象类 总结起来 抽象类是一个包含至少一
  • 了解如何在20分钟内创建您的第一个Angular应用

    Angular is a JavaScript framework created my Misko Hevery and maintained by Google It s an MVC Model View Vontroller You
  • Verilog实现两路组相联cache

    cache代码 timescale 1ns 1ps cache共32块 分为16组 每组2块 即两路组相联 1块 4字 1字 4字节 主存共1024块 4096个字 主存地址共12位 1 0 为块内偏移 5 2 为组地址 11 6 为Tag
  • 【MATLAB第43期】基于MATLAB的BO-NAR贝叶斯优化动态神经网络NAR时间序列股票预测模型

    MATLAB第43期 基于MATLAB的BO NAR贝叶斯优化动态神经网络NAR时间序列股票预测模型 一 效果展示 二 模型介绍 1 数据情况 一列数据 499个值 ratio 0 9 训练集比例 MaxEpochs 600 最大训练次数
  • Fatal error in gc GetThreadContext failed bug 异常。

    Fatal error in gc GetThreadContext failed PC unity5 3 4 c exe windows 废话不说 网上各种回答是杀毒软件关闭 但是需求不允许关闭其他 只能从代码出发 发现 开个一个线程 这
  • 13 openEuler用户组管理

    文章目录 13 1 创建用户组 13 1 1 groupadd命令 13 1 2 用户组信息文件 13 1 3 创建用户组实例 13 2 修改用户组 13 2 1 修改GID 13 2 2 修改用户组名 13 3 删除用户组 13 4 将用
  • DSS部署-11、Spark on Yarn部署

    文章目录 第七部分 Spark on Yarn部署 相关配置 操作记录如下 spark sql e show databases 第七部分 Spark on Yarn部署 相关配置 tar xf spark 2 3 2 bin hadoop
  • 数学表达式: 从恐惧到单挑 (7. min 与 argmin)

    7 min 与 argmin min 和 argmin 在机器学习中常用 max 和 argmax 同理 7 1 min min 是 minimal 的缩写 用于获得集合中的最小值 如 min 3 1
  • 螺旋矩阵,python实现

    螺旋矩阵问题 给定一个n阶正方形矩阵 生成一个包含 1 到 n2 所有元素 且元素按顺时针顺序螺旋排列的正方形矩阵 力扣原题 这个问题不涉及什么算法问题 考察的就是个人对于代码的掌控和抽象 螺旋矩阵长的是这个样子 处理这个问题就得提到二分法
  • 各操作系统下安装docker

    1 查看服务器软硬件信息 1 1 判断操作系统类型 操作系统 基于发行版 统信UOS Debian 银河麒麟 StartOS Debian openEuler CentOS 优麒麟 Ubuntu Kylin Ubuntu 中标麒麟 Kyli
  • Java算法题:两数之和

    LeetCode原题 给你一个下标从 1 开始的整数数组 numbers 该数组已按 非递减顺序排列 请你从数组中找出满足相加之和等于目标数 target 的两个数 示例 1 输入 numbers 2 7 11 15 target 9 输出