网易2018校招内推编程题 等差数列

简介: 如果一个数列S满足对于所有的合法的i,都有S[i + 1] = S[i] + d, 这里的d也可以是负数和零,我们就称数列S为等差数列。 小易现在有一个长度为n的数列x,小易想把x变为一个等差数列。
问题:
 如果一个数列S满足对于所有的合法的i,都有S[i + 1] = S[i] + d, 这里的d也可以是负数和零,我们就称数列S为等差数列。
小易现在有一个长度为n的数列x,小易想把x变为一个等差数列。小易允许在数列上做交换任意两个位置的数值的操作,并且交换操作允许交换多次。
但是有些数列通过交换还是不能变成等差数列,小易需要判别一个数列是否能通过交换操作变成等差数列 
输入描述:
输入包括两行,第一行包含整数n(2 ≤ n ≤ 50),即数列的长度。
第二行n个元素x[i](0 ≤ x[i] ≤ 1000),即数列中的每个整数。


输出描述:
如果可以变成等差数列输出"Possible",否则输出"Impossible"。

输入例子1:
3
3 1 2

输出例子1:
Possible

思路:
先将输入的数组进行排序,判断相邻数组之间的差值,若不完全相同,则说明不是等差。

java程序

public class ArithmeticSequence {

	public static void main(String[] args) {

//		输入
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int[] arr = new int[n];
		for (int i = 0; i < n; i++) {
			arr[i] = scanner.nextInt();
		}

//		快速排序
		sortSmallToBig(arr, 0, arr.length - 1);

//		判断差值
		int diff = arr[1] - arr[0];//先将前两个数的差赋给变量diff
		for (int i = 2; i < arr.length; i++) {
			int temp = arr[i] - arr[i - 1]; //后续相邻整数间的差值赋给temp
			if (temp != diff) {//若他们之间的差和前两个差不等,说明不是等差数列,输出Impossible 并结束程序。
				System.out.println("Impossible");
				return;
			}
		}

		System.out.println("Possible");
	}

	
//	smallToBig和sortSmallToBig是快速排序。 针对数组进行从小到大的排序。
//	调用 sortSmallToBig(int[] array, int start, int end)  传入数组  0  和数组.lenth-1.
public static int smallToBig(int[] array, int start, int end) { int key = array[start]; while (start < end) { while (array[end] >= key && end > start) { end--; } array[start] = array[end]; while (array[start] <= key && end > start) { start++; } array[end] = array[start]; } array[end] = key; return end; } public static void sortSmallToBig(int[] array, int start, int end) { if (start >= end) { return; } int local = smallToBig(array, start, end); sortSmallToBig(array, start, local - 1); sortSmallToBig(array, local + 1, end); } }


相关文章
|
6月前
|
算法 NoSQL Java
懵逼!阿里一面就被虐了,幸获内推华为技术四面,成功拿到offer
上个月,哥们从某小厂离职,转投阿里云,简历优秀,很顺利地拿到了面试通知,但之后的进展却让哥们怀疑人生了,或者说让哥们懵逼的是,面试阿里云居然第一面就被吊打?让哥们开始怀疑自己,是不是这些年工作下来,自己没有一丁点的进步呢?
|
6月前
|
算法 安全 Java
五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多
文章有点长,请耐心看完,绝对有收获!不想听我BB直接进入面试分享: 准备过程 蚂蚁金服面试分享 拼多多面试分享 字节跳动面试分享 总结
|
6月前
|
负载均衡 网络协议 算法
海投简历一个月无果,机遇巧合得前辈内推,五面蘑菇街终获offer
到目前为止使用Java到现在大概有两年多的时间,所以java算不上很好。刚开始投递的时候,刚辞职,也没准备笔试面试,很多东西都忘记了。所以,刚开始我并没有直接就投递蘑菇街,毕竟心里还是有一点点小害怕的。
|
人工智能 算法 Java
拼多多2019春招编程题答案
拼多多2019春招编程题答案
|
C++
剑指Offer - 面试题47:礼物的最大价值
剑指Offer - 面试题47:礼物的最大价值
83 0
|
SQL 消息中间件 缓存
阿里云大数据开发三面面经,已过,面试题已配答案
阿里云大数据开发三面面经,已过,面试题已配答案
1139 1
|
算法 C++
【每日算法Day 75】字节跳动面试题:手撕困难题,看过我Day 71的人都会做了!
【每日算法Day 75】字节跳动面试题:手撕困难题,看过我Day 71的人都会做了!
100 0
2023年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多
文章有点长,请耐心看完,绝对有收获!不想听我BB直接进入面试分享: 准备过程 蚂蚁金服面试分享 拼多多面试分享 字节跳动面试分享 总结 说起来开始进行面试是年前倒数第二周,上午9点,我还在去公司的公交上,突然收到蚂蚁的面试电话,其实算不上真正的面试。面试官只是和我聊了下他们在做的事情(主要是做双十一这里大促的稳定性保障,偏中间件吧),说的很详细,然后和我沟通了下是否有兴趣,我表示有兴趣,后面就收到正式面试的通知,最后没选择去蚂蚁表示抱歉。
热乎着,昨晚阿里这题真太绝了
昨晚有个同学参加了阿里的笔试题,笔试完后同学说这次笔试感觉难,跟我说了其中一道题,我看了感觉还是挺有质量的,看着这个难度都是第二题,总共三题感觉还是有难度的(瑟瑟发抖),想着还是和大家分享一下。
361 0
热乎着,昨晚阿里这题真太绝了
|
机器学习/深度学习
【蓝桥真题4】练练填空就想进国赛?拿下大题才能让你真正有底气(蓝桥31日冲刺打卡)(上)
【蓝桥真题4】练练填空就想进国赛?拿下大题才能让你真正有底气(蓝桥31日冲刺打卡)
129 0
【蓝桥真题4】练练填空就想进国赛?拿下大题才能让你真正有底气(蓝桥31日冲刺打卡)(上)