博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【九度OJ1352】|【剑指offer41】和为S的两个数字
阅读量:6614 次
发布时间:2019-06-25

本文共 1815 字,大约阅读时间需要 6 分钟。

hot3.png

题目描述:
输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输入:
每个测试案例包括两行:
第一行包含一个整数n和k,n表示数组中的元素个数,k表示两数之和。其中1 <= n <= 10^6,k为int
第二行包含n个整数,每个数组均为int类型。
输出:

对应每个测试案例,输出两个数,小的先输出。如果找不到,则输出“-1 -1”

知识点:

已知数组求两数的和为固定值,利用前后两个指针向中间移动,同时判断是否满足所求的值(find2()),可以缩短运行时间(find())

此题,因为是递增数组,所以第一次求出a[low]+a[high]==k,则是乘积最小的那个。

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.StreamTokenizer;public class Main {	public static void find(int[] a,int target){		int m = 0;		int n = 0;		boolean flag = false;		for(int i = 0; i < a.length; i++){			for(int j = i+1; j < a.length; j++){				if(a[i] * 2 > target){					i = a.length;					j = a.length;					break;				}				int temp = a[i] + a[j];				if(temp > target){					break;				}else if(temp == target){					m = a[i];					n = a[j];					flag = true;					i = a.length;					j = a.length;					break;				}			}		}		if(!flag){			System.out.println("-1 -1");		}else{			if(m > n)				System.out.println(n+" "+m);			else				System.out.println(m+" "+n);		}				}	public static void find2(int[] a, int target){		int low = 0;		int high = a.length -1;		while(low < high){			if(a[low] + a[high] == target)break;			else if(a[low] + a[high] < target)				low++;			else				high--;		}		if(low < high)			System.out.println(a[low]+" "+a[high]);		else			System.out.println("-1 -1");	}		public static void main(String[] args) throws IOException {		StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));		while(st.nextToken() != st.TT_EOF){			int n = (int) st.nval;			st.nextToken();			int target = (int) st.nval;			int[] a = new int[n];			int count = 0;			while(count < n){				st.nextToken();				a[count++] = (int) st.nval;			}			find2(a, target);		}	}}

转载于:https://my.oschina.net/u/1182234/blog/169610

你可能感兴趣的文章
KubeCon + CloudNativeCon论坛2019上海
查看>>
【总结整理】已读功能---摘自《馒头商学院》
查看>>
非抢占式系统优点
查看>>
TPYBoard V102:能跑Python的stm32开发板
查看>>
在阿里云域名https配置(nginx为例)
查看>>
TP5.0中的小知识总结
查看>>
【SSH网上商城项目实战27】域名空间的申请和项目的部署及发布
查看>>
RabbitMQ-从基础到实战(2)— 防止消息丢失
查看>>
5.1、Android Studio用Logcat编写和查看日志
查看>>
【译】ExtJS 4.1会带来什么
查看>>
正则表达式基础知识
查看>>
【ShaderToy】开篇
查看>>
wp7 城市天气预报查询
查看>>
重要的话
查看>>
银联参数
查看>>
QRegExp正则表达式用法
查看>>
a 标签的伪类的正确顺序,以及原因
查看>>
PHP中ts和nts版本 - vc6和vc9编译版本的区别
查看>>
iphone 地图:
查看>>
ES6学习总结之 Promise对象
查看>>