笔试题:排序后取最小差值数

笔试题:要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-190,要求2个人的身高差值最小(如果差值相同的话,选取其中最高的两人),以升序输出两个人的身高。 Smple input:161 189 167 172 188 Sample outPut: 188 189

public class demo06{
public static void main(String[] args){
int[] arr={161,189,167,172,188};//原始值
//将原始值升序排序
getSort(arr);
//升序排序后,取出最小差值,记录最小差值下标
int[] arrDiff=new int[4];
int min=arr[1]-arr[0];
int index=-1;
int output1=0,output2=0;
for(int i=0;i<4;i++){
if(getDifferent(arr[i+1],arr[i])<=min)
    index=i;
}
System.out.println("身高差值最小的两个同学按升序排序输出为:"+arr[index]+","+arr[index+1]);
}
//将数组升序排序
public static int[] getSort(int[] arr){
int length=arr.length;
System.out.println(length);
for(int j=0;j<length-1;j++){
if(getDifferent(arr[j],arr[j+1])>0){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
return arr;
}
//两两相减,得到差值
public static int getDifferent(int a,int b){
return a-b;
}
}
时间: 2024-12-30 04:42:26

笔试题:排序后取最小差值数的相关文章

谷歌笔试题&mdash;&mdash;排序,只允许0和其他元素交换

2.2 长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的swap,请设计并实现排序. 这题有一个隐含条件:即数组元素是连续的,即0--n-1,当你排好序后,你会发现数组元素和该元素的下标是相等的. 思路:以数组2 0 3 1为例 1.首先a[0]=2,按照上述条件它应该放在a[2]的位置上.因为只允许0元素和其他元素的交换.所以不能直接交换a[0]和a[2],所以将0元素和a[2]互换,得到2 3 0 1,然后就可以把a[0]=2和a[2]=0互换了,得到0 3 2 1 按照这个思

一道笔试题来理顺Java中的值传递和引用传递

前段时间参加了一场面试,其中有一道引用传递的题,因为当时并没有考虑清楚所以做错了. 现在来复盘一下,题目如下: private static void change(StringBuffer str11, StringBuffer str12) { str12 = str11; str11 = new StringBuffer("new world"); str12.append("new world");} public static void main(Stri

Redis Set后取不到值(两台服务器时间不一致导致)

在本地开发时使用的redis是部署在本机,用的好好的.当部署到测试环境(两台虚拟机-web/redis)后偶然间发现有时候Set后取出来是null,刚部署上去的时候倒没发现,经过几次测试后发现web服务器时间和redis服务器时间不一致导致,将时间修改或同步一致即可. 之所以出现时间不一致的原因是web服务器重启后时间都变成美国时间,设置后重启还会被还原成美国时间,技术部也不知道从哪里拷的一个装好的虚拟机文件,由于项目赶就没花太多时间去修复了,在正式环境中没有这个问题.

笔试题——C++后序字符比较

题目:从两个数组的最后一个元素开始比较,输出数组中不同元素的个数.当一个数组的所有元素比较完成后,结束比较.a数组长度5,b数组长度3,a[ 4 ]和b[ 2 ]比较. 例: 输入: 77 21 1 3 5 1 3 5 输出: 0 输入: 77 21 1 3 5 7 1 3 5 输出: 3 代码: 1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 int main() 5 { 6 vector &l

SQL group by 分组后,同一组的排序后取第一条

SELECT * FROM(                SELECT                     [SPID]                    ,[PH1]                    ,[PH1_Code]                    ,[ProjectName]                     ,ROW_NUMBER() OVER(PARTITION BY [SPID] ORDER BY [SPID]) RowNum             

(笔试题)最小的非“重复的数”

题目: 给一个定义:对一个整数,若其中存在相邻两位上的数字相同,则称其为“重复的数”:现给定一个正整数n,求不小于n的最小的非“重复的数”. 思路: 假设输入的数为n,则令m=n, 分别取m的最低两位数字a,b, 判断是否a==b,如果是说明是重复的数,那么递归调用n=m+1;考虑特殊情况,ab=99,产生进位后100仍未重复数,此时应该递归调用n=m+2: 如果a!=b,则往前挪一位,即m=m/10,直至m/10=0为止,最后返回n. 该思路也可以通过非递归来实现,详见代码. 代码: #inc

(笔试题)被3和5整除的数的和

题目: 给定一个数n, 求不超过n的所有的能被3或者5整除的数的和.例如: n = 9,答案3 + 6 + 5 + 9 = 23. 思路: 能被3或者5整除的数是哪些? 被3整除的数:3,6,9....[n/3]*3 被5整除的数:5,10,15...[n/5]*5 重复的数(同时被3和5整除的数,即被15整除):15,30...[n/15]*15 于是问题的答案就很明显: 被3或者5整除的数的和=被3整除的数之和+被5整除的数之和-被15整除的数之和 因为求和的数列都是等差数列,运用等差数列求

笔试题系列001

测试笔试题类型:软件测试| 试题:55道试题(50道选择题,5道问答题)http://bbs.sjtu.edu.cn/bbsanc,path,%2Fgroups%2FGROUP_9%2FJobInfo%2FD7CD26755%2FD85486036%2FM.1131274669.A.html http://202.197.191.206:8080/38/text/test/test_2/shijuan2.htm 软件工程 http://test.examw.com/410/P6517/一.单选题

今日头条2017后端工程师实习生笔试题 - 题解

今日头条2017后端工程师实习生笔试题 最大映射 题意 给n(不超过50)个字符串,每个字符串(长度不超过12)由A-J的大写字符组成.要求将每个字符映射为0-9,使得每个字符串可以看作一个整数(不能有前导零),求这些字符串映射后得到数字的最大和值.(数据保证至少有一个字符不是任何字符串的首字母) 思路 根据字符所在的位置,累积统计每个字符的权值,从右到左权值分别为1, 10, 100, 1000..... 然后排序,从权值最小的到权值最大的依次映射为0-9,求和即为答案. 注意 由于每个字符串