• 贝壳场景算法(Java实现)


    <一>、计算绝对值:

    1.题目描述:

    给出n个正整数,要求找出相邻两个数字中差的绝对值最小的一对数字,如果有差的绝对值相同的,则输出最前面的一对数。

    2<n<=100,正整数都在10^16范围内

    输入:

      输入包含1行,第一行为n,第二行是n个用空格分隔的正整数。

    输出:

      输出包含一行两个正整数,要求按照原来的顺序输出。

    样例输入:

      9

      1 3 4 7 2 6 5 12 32

    样例输出:

      3 4

    代码1如下:这是自己在编译器实现的,但是进入考试是不行的。

    package com.ymm.core;
    
    import java.util.Scanner;
    
    public class Main1 {
    
    	public static void main(String[] args) {
    		
    		Scanner in = new Scanner(System.in);
    		int n = in.nextInt();
    		
    		int[] arr = new int[n];
    		for(int i = 0;i < n;i++) {
    			arr[i] = in.nextInt();
    		}
    
    		int min = arr[1] - arr[0];
    		int index = 1;
    		
    		for(int i = 1; i < n;i++) {
    			int  tmp = Math.abs(arr[i] - arr[i - 1]);
    			if(tmp < min) {
    				min = tmp;
    				index = i;
    			}
    		}
    		System.out.println(arr[index - 1] + " " + arr[index]);
    		
    	}
    
    }
    

     正确代码:

    package com.ymm.core;
    
    import java.util.Scanner;
    
    public class Main1 {
    
    	public static void main(String[] args) {
    		
    		@SuppressWarnings("resource")
    		Scanner in = new Scanner(System.in);
    		int n = in.nextInt();
    		
    		long[] arr = new long[n];
    		for(int i = 0;i < n;i++) {
    			arr[i] = in.nextInt();
    		}
    
    		long min = arr[1] - arr[0];
    		int index = 1;
    		
    		for(int i = 1; i < n;i++) {
    			long  tmp = Math.abs(arr[i] - arr[i - 1]);
    			if(tmp < min) {
    				min = tmp;
    				index = i;
    			}
    		}
    		System.out.println(arr[index - 1] + " " + arr[index]);
    		
    	}
    

     注意:2<n<=100,正整数都在10^16范围内。

    <二>月光宝盒的密码

    1.题目描述:

      小希偶然得到了传说中的月光宝盒,然而打开月光宝盒需要一串密码。虽然小希并不知道密码具体是什么,但是月光宝盒的说明书上有一个长度为n(2 <= N <= 50000)的序列a(-10^9 <= a[i] <= 10^9)的范围内。下面写着一段话:密码是这个序列的最长严格上升子序列的长度(严格上升子序列是指,子序列的元素是严格递增的,例如;[5,1,6,2,4]的最长严格上升子序列为[1,2,4]),请你帮小希找到这个密码。

    输入:

      第一行:1个数N,N的序列的长度(2 <= N <= 50000)

      第2到N + 1行;每行1个数,对应序列的元素(-10^9 <= a[i] <= 10^9)

    输出;

      一个正整数表示严格最长上升子序列的长度。

    样例输入:

    8

    5

    1

    6

    8

    2

    4

    5

    10

    样例输出:

    5

    代码如下:

    package com.ymm.core;
    
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main2 {
    
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		
    		int n = in.nextInt();
    		if(n == 0) {
    			System.out.println(0);
    			return;
    		}
    		int[] arr = new int[n];
    		for(int i = 0;i < n;i++) {
    			arr[i] = in.nextInt();
    		}
    		
    		int[] temp = new int[n];
    		int len = 0;
    		for(int count : arr) {
    			int i = Arrays.binarySearch(temp, 0, len, count);
    			if( i < 0) {
    				i = -(i + 1);
    			}
    			temp[i] = count;
    			if(i == len) {
    				len++;
    			}
    		}
    		System.out.println(len);
    	}
    
    }
    

     <三>举重大赛

    1.题目描述:

      举重大赛开始了,为了保证公平,要求比赛的双方体重较小值要大于等于较大值的90%,那么对于这N个人最多能进行多少场比赛呢,任意两人之间最多进行1一场比赛。

    输入:

      第一行N,表示参赛人数(2 <= N <= 10^5)

      第二行N个正整数表示体重(0 < 体重 <= 10^8)

    输出:

      一个数,表示最多能进行的比赛场数

    样例输入:

    5

    1 1 1 1 1

    样例输出:

    10

     代码实现:

    package com.ymm.core;
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class Main3 {
    
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		
    		int n = in.nextInt();
    		ArrayList<Integer> list = new ArrayList<>();
    		
    		for(int i = 0;i < n;i++) {
    			list.add(in.nextInt());
    		}
    		
    		int res = 0;
    		
    		for(int i = n - 1;i > 0;i--) {
    			double temp = list.get(i) * 0.9;
    			for(int j = i - 1;j >= 0;j--) {
    				if(list.get(j) >= temp) {
    					res++;
    				}else {
    					break;
    				}
    			}
    		}
    		System.out.println(res);
    	}
    }
    
  • 相关阅读:
    webpack 打包性能分析工具
    npm 使用
    npm 构建时,次要版本变化引起的问题
    AtomicStampedReference、AtomicMarkableReference 区别
    vue-cli 中的静态资源处理
    vue-cli 构建项目中 config/index.js 文件解读
    webpack的3个路径配置项: assetsRoot、assetsSubDirectory、assetsPublicPath
    Vue2 dist 目录下各个文件的区别
    DllPlugin、DllReferencePlugin 可以提取的第三方库列表
    JUC集合之 CopyOnWriteArrayList
  • 原文地址:https://www.cnblogs.com/youdiaodaxue16/p/11333708.html
Copyright © 2020-2023  润新知