Java算法题:两数之和
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;}
总结:双指针真好用~
Java算法题:两数之和相关推荐
- Java算法(两数之和)
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同 ...
- php算法两数之和 复杂度,每天一道leetcode算法题:两数之和-php版
我们先来看题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用 ...
- leetcode算法题--两数之和
题目地址:https://leetcode-cn.com/problems/two-sum/ vector<int> twoSum(vector<int>& nums, ...
- LeetCode题库整理【Java】—— 1两数之和
LeetCode题库整理[Java] 1.两数之和 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nu ...
- LeetCode题库第1题 两数之和
两数之和 LeetCode题库第1题 两数之和 看到题,我就想到了暴力法: public int[] force(int[] nums,int target) {for (int i = 0; i & ...
- 力扣热门100题——两数之和(最全解法)
1.两数之和 1.问题描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标. 你可以假设每种输入只会对应一 ...
- Android面试中常问的几种简单算法(两数之和、开灯、上楼梯、柠檬水、找最多的数)
大家好,最近在面试,大小公司可能都会问一两个算法,来测试面试者的算法能力.本篇博客从笔者被问到的几个简单算法来给大家分享一下,(面试官会根据面试者的能力,提问不同难度,这篇的分享是比较简单的,大神可忽 ...
- 【每日一算法】两数之和 IV - 输入 BST
微信改版,加星标不迷路! 每日一算法-两数之和IV-输入BST 作者:阿广 阅读目录 1 题目 2 解析 1 题目 给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目 ...
- LeetCode刷题-两数之和(持续更新)
文章目录 LeetCode 1. Two Sum (两数之和) 题目描述 样例 解题思路一(暴力法) 解题思路二(使用map) 前言:最近业余时间,一直在看LeetCode上面的题,上面有许多好的解题 ...
最新文章
- sql2012一段时间无法连接报53错误
- 【剑指offer - C++/Java】14、链表中倒数第k的节点
- flex 下对齐_Flex 布局示例
- Java的class文件批量反编译成Java文件
- DB2报“数据库日志已满”问题解决
- java jdbc连接字符串加密,Java JDBC连接数据库字符串大全
- 解决新版chrome跨域问题:cookie丢失以及samesite属性问题
- android 快速开发,GitHub - limedroid/XDroid: 轻量级Android快速开发框架
- CText类使用例程
- 使用el-tree组件当后台返回的数据过多导致页面反应时间过长或页面崩溃的问题及解决方案
- 基于 KNN 和 人体关键点的动作分类 - Pose classification
- c语言计算机图形来画八分画圆,计算机图形学:中点画圆算法
- C语言小型商品管理系统
- Mac 终端 oh-my-zsh 配置,内含解决oh-my-zsh 下载不下来的方法
- socket:10038错误
- java 跳过 SSL
- 海量数据大课学习笔记(8)-账号微服务注册模块+短信验证码+阿里云OSS开发实战-小滴课堂
- 关于会声会影导入视频出现卡顿花屏的解决办法
- Scratch案例——画坐标和三角形
- uml事务、关系和图