java 两数之差_1_两数之和(java)
两数之和
问题描述:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
代码:
package algorithm;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Solution {
// 解法1:暴力法
public int[] twoSum(int[] nums, int target) {
int i, j;
int sum;
// 外层循环遍历每一个元素
for (i = 0; i <= nums.length; i++) {
// 内层循环遍历除i以外的值
// 并判断是否存在一个值与nums[i]之和等于target
for (j = i + 1; j <= nums.length; j++) {
sum = nums[i] + nums[j];
if (sum == target) {
return new int[] { i, j };
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
// 解法2 两遍哈希表
public int[] twoSum_1(int[] nums, int target) {
Map map = new HashMap<>();
// 第一个循环,将数据元素的值和索引存到哈希表中
for (int i = 0; i < nums.length; i++) {
map.put(nums[i], i);
}
// 第二个循环,遍历各元素与目标值target的差值,是否存在于哈希表中
// 存在则输出该值与差值的索引值
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement) && map.get(complement) != i) {
return new int[] { i, map.get(complement) };
}
}
throw new IllegalArgumentException("No two sum solution");
}
// 解法3 一遍哈希表
// 在迭代并将元素插入到哈希表中的同时,先校验哈希表中是否存在当前元素所对应的目标元素,如果有则直接返回
public int[] twoSum_2(int[] nums, int target) {
Map map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
return new int[] {i,map.get(complement)};
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
// main
public static void main(String[] args) {
Solution solution = new Solution();
Scanner input = new Scanner(System.in);
System.out.println("请输入数组长度:");
int n = input.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
System.out.println("输入第" + i + "个数:");
nums[i] = input.nextInt();
}
System.out.println("请输入目标值:");
int m = input.nextInt();
int target = m;
System.out.println("目标值:" + target);
System.out.println("整数数组 nums=" + Arrays.toString(nums));
// 计算一个方法执行时长,可用模板来写
long startTime = System.currentTimeMillis();
//int[] twoSum = solution.twoSum(nums, target);
//int[] twoSum_1 = solution.twoSum_1(nums, target);
int[] twoSum_2 = solution.twoSum_2(nums, target);
long endTime = System.currentTimeMillis();
float excTime = (float) (endTime - startTime) / 1000;
System.out.println("结果=" + Arrays.toString(twoSum_2) + ",执行时间=" + excTime + 's');
}
}
java 两数之差_1_两数之和(java)相关推荐
- java 计算两个日期相差月数_Java简单计算两个日期月数差的方法
本文实例讲述了Java简单计算两个日期月数差的方法.分享给大家供大家参考,具体如下: /** * 获取两个日期相差的月数 * @param d1 较大的日期 * @param d2 较小的日期 * @ ...
- Java 递归解决 quot;仅仅能两数相乘的计算器计算x^yquot; 问题
Java 递归解决 "仅仅能两数相乘的计算器计算x^y" 问题 /*** 求一个数的乘方* 求x^y,y是一个正整数. 设计算器仅仅能计算两数相乘,不能一次计算n个数相乘. * 知 ...
- java中算两个时间内的秒数_java – Joda Time – 计算两个日期之间的秒数会引发异常....
我使用以下代码来计算两个日期之间的秒数差异: long secondsBetween = (Seconds.secondsBetween(new LocalDate("1901-01-01& ...
- JAVA简单计算器(简单实现两数加减乘除)
文章目录 前言 简易计算器 前言 今日的小练习为用户输入两个数,简易实现两数的加减乘除并可重复使用. 实现这个小功能有了大概的思路其实还好,但是我却没有止步于此,为了提升用户的体验性,保证这个小程序的 ...
- 如何用python计算excel两行之间的差值_excel表格求两列数据差值-怎样在EXCEL表格中求两列数的差?...
怎样在EXCEL表格中求两列数的差? 1.双击打开需行求差的Excel表格,Excel表格. 2.在进入Excel表格后,使用鼠标需差的单元格,先选中其中一行即可. 3.在选中一行后,在单元格内输入& ...
- Java计算两个日期相差的月数
/*** 获取两个日期相差的月数*/public static int getMonthDiff(Date d1, Date d2) {Calendar c1 = Calendar.getInstan ...
- 【C语言习题】两素数之差为2,则称该两素数为双胞胎数。求出[2,300]内双胞胎数。
问题 两素数之差为2,则称该两素数为双胞胎数.求出[2,300]内: 所有素数并保存到文件prime.txt中: 有多少对双胞胎数: 最大的一对双胞胎数. 分析 首先脑子里要有文件操作的框架, 其次要 ...
- C语言习题:/*键盘输入两个非零整数A和B,如果A和B都是偶数则输出两个数的和,如果A和B都是奇数则输出两个数的差,如果A是奇数B是偶数则输出两数积,如果A是偶数B是奇数输出AVB结果*/
#include<stdio.h> /*键盘输入两个非零整数A和B,如果A和B都是偶数则输出两个数的和, 如果A和B都是奇数则输出两个数的差, 如果A是奇数B是偶数则输出两数积, 如果A是 ...
- java 日期相差月数_Java计算两个日期相差的月数
/** * 获取两个日期相差的月数 */ public static int getMonthDiff(Date d1, Date d2) { Calendar c1 = Calendar.getIn ...
最新文章
- Html-Css 从入门到放弃(一)基础知识
- 小米12系列或首发骁龙898旗舰芯:三星4nm工艺
- Jenkins创建新任务
- ubuntu 创建桌面图标快捷方式
- 百元百鸡 //构造结构体变量
- OpenCV DNN调用训练好的caffe 模型(目标检测)
- Tomcat8安装与配置
- 测试吃鸡游戏帧数软件,帧数暴涨10%+ RX 560D开核“吃鸡”测试
- 如何设置BIOS实现远程开机
- ITFriend网站内测公测感悟
- 基于STM32的I2C通信 2(读写AT24C02)
- 虚拟机vmare安装CentOS7详细教程
- linux下rsync命令,Linux 命令之rsync命令详解
- 软件设计师---UML
- 如何快速将pdf表格转换成excel
- 程序设计我爱你_如何用爱设计
- 什么是大数据?它存在的意义和用途是什么?
- srttrail txt无法开机_srttrail.txt怎么修复
- 物联网概论(IoT)__Chp1-3 体系架构、射频识别(RFID)
- rust潘通色_[转载]PANTONE(潘通色卡)TPX/TCX色号颜色查询--以后不用愁啦!!!...
热门文章
- 间接寻址级别不同_单片机指令系统与寻址方式
- spring数据字典_Redis为什么默认16个数据库?
- 整数分解为若干项之和python_SVD奇异值分解及Python实例
- 优秀案例|App内弹窗界面设计灵感
- 这样的家居选购界面让你忍不住剁手的冲动!
- 完整的金融类APP UI设计素材,深度学习临摹
- python在法律中的应用_Python在共轭梯度法中的运用
- 疯狂java workflow_疯狂Workflow讲义:基于Activiti的工作流应用开发 完整pdf扫描版[136MB]...
- python debug工具_极简Python DeBug工具——PySnooper
- 史上最优秀的转换工具类网站推荐[唯一保存历史转换记录]