网易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); } }


相关文章
|
Java C++ Python
快讯:LeetCode中国正式上线《剑指Offer》题目,刷题真方便了!
近日,LeetCode中国[1]上线了一个全新的分类模块 LCOF “剑指 Offer[2]”。
4274 0
快讯:LeetCode中国正式上线《剑指Offer》题目,刷题真方便了!
|
存储 测试技术
(笔试)华为2021秋招面试真题!(内含详细解题思路)
<p>  前言:</p> <p>  文章内容主要介绍了华为2021秋招笔试题(小结),小编觉得挺不错的,现在特意在此分享给大家,也给大家做个参考。(部分代码,用图片的方式呈现出来,方便各位收藏与很好的观看)</p> <p>  内容如下:</p> <p>  一、全量字符集与已占用字符集</p> <p>  输入描述:</p>
876 0
|
23天前
|
算法 NoSQL Java
懵逼!阿里一面就被虐了,幸获内推华为技术四面,成功拿到offer
上个月,哥们从某小厂离职,转投阿里云,简历优秀,很顺利地拿到了面试通知,但之后的进展却让哥们怀疑人生了,或者说让哥们懵逼的是,面试阿里云居然第一面就被吊打?让哥们开始怀疑自己,是不是这些年工作下来,自己没有一丁点的进步呢?
|
7月前
|
算法 Java 测试技术
面试题精选:求根号2简单?高级算法你肯定不会(1)
开始大家都以为这个算法是游戏的开发者Carmack发现的,但后来调查发现,该算法在这之前就在计算机图形学的硬件与软件领域中有所应用,如SGI和3dfx就曾在产品中应用此算法,所以至今都无人知晓这个算法是谁发明的。
30 1
|
7月前
|
算法 Java C语言
面试题精选:求根号2简单?高级算法你肯定不会(2)
这篇博客从立题到完成经历了好几天的时间,期间整理思路、编码、绘图、查阅资料、修改完善总累计耗时近8h。写作不易,如果文章对你有用欢迎素质三连(点赞、收藏加关注) 。
34 1
热乎着,昨晚阿里这题真太绝了
昨晚有个同学参加了阿里的笔试题,笔试完后同学说这次笔试感觉难,跟我说了其中一道题,我看了感觉还是挺有质量的,看着这个难度都是第二题,总共三题感觉还是有难度的(瑟瑟发抖),想着还是和大家分享一下。
285 0
热乎着,昨晚阿里这题真太绝了
|
机器学习/深度学习 定位技术
蓝桥杯真题31日冲刺国一 | 每日题解报告 第十六天
大家好,我是泡泡,今天的题目很合理,很多模板,大家多多掌握,学习一下用各种思路解题,灵活多变!
213 0
蓝桥杯真题31日冲刺国一 | 每日题解报告 第十六天
|
机器学习/深度学习 人工智能 算法
蓝桥杯最后一天复习?各大算法四步法教你轻松秒杀各种题型
大家好,我是泡泡,距离蓝桥杯还有一天时间,我们一定要把握住最后的时间,跟着我,把全部的题型复习整理一遍,让自己不再迷茫不自信,AK蓝桥!
167 0
蓝桥杯最后一天复习?各大算法四步法教你轻松秒杀各种题型
|
前端开发
#yyds干货盘点# 前端歌谣的刷题之路-第三十三题-或运算
#yyds干货盘点# 前端歌谣的刷题之路-第三十三题-或运算
31 0
#yyds干货盘点# 前端歌谣的刷题之路-第三十三题-或运算