CCF-Java - 最小差值 - 100分

往前走,往前看,哪怕前途一片迷惘,哪怕只是凭着惯性往前走——总有一天,会在自己漫长的脚印中找到方向。
只是大概需要一些耐心
——priest

命令行输入数组与输出

代码实现

package ccf_1;
import java.util.Arrays;
import java.util.Scanner; //导入Scanner类
public class ccf_test2{
    public static void main (String args[]){
        Scanner sc = new Scanner(System.in); //使用scanner类创建sc对象
        while(sc.hasNext()){
        //while循环是只要while后面表达式的值为true就会一直循环,直到表达式的值变为false,结束循环
            int n = sc.nextInt(); //数组个数
            int[] a = new int[n]; //数组
            for (int i=0; i<n; i++){
                a[i] = sc.nextInt();  //依次输入数组元素
            }
            Arrays.sort(a); //Array调用排序方法,数组a按照升序排序
            System.out.println(Arrays.toString(a)); //输出数组元素
        }
    }
}
5
55555 5 55 5555 555
[5, 55, 555, 5555, 55555]

最小差值

问题描述

问题描述
  给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。
输入格式
  输入第一行包含一个整数n。
  第二行包含n个正整数,相邻整数之间使用一个空格分隔。
输出格式
  输出一个整数,表示答案。
样例输入
5
1 5 4 8 20
样例输出
1
样例说明
  相差最小的两个数是5和4,它们之间的差值是1。
样例输入
5
9 3 6 1 3
样例输出
0
样例说明
  有两个相同的数3,它们之间的差值是0.
数据规模和约定
  对于所有评测用例,2 ≤ n ≤ 1000,每个给定的整数都是不超过10000的正整数

代码实现

//2017-12-1
package ccf_1;
import java.util.Arrays;
import java.util.Scanner; //导入Scanner类
public class ccf_test2{
    public static void main (String args[]){
        Scanner sc = new Scanner(System.in); //使用scanner类创建sc对象
        while(sc.hasNext()){
            int n = sc.nextInt(); //数组个数
            int[] a = new int[n]; //数组
            int min_dif = 10000; //最小差值
            for (int i=0; i<n; i++){
                a[i] = sc.nextInt();  //依次输入数组元素
            }
            for (int i=0;i<n;i++){
                for (int j=i+1;j<n;j++){
                    int dif = Math.abs(a[i]-a[j]);
                    if (min_dif>dif){
                        min_dif = dif;
                    }
                }
            }
            System.out.println(min_dif);
        }
    }
}
5
1 5 4 8 20
1

评测结果

根据提交要求更改提交程序后得到如下评测结果:

这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章