• 网易笔试题_塔的最小不稳定性


    原题不再赘述,大概就是这么个意思:

    输入n个数(均大于0)以及可以对这n个数进行操作的最多次数,每次操作将n个数中最大值-1,最小值+1,计算进行这样的操作后数组中(最大值-最小值)的最小值。

    java简单实现(本质:贪心,每次将最大塔的立方体移动到最小塔上)

     1 package interview.test;
     2 
     3 import java.util.*;
     4 
     5 /**
     6  * Created by BUAA514 on 2018-08-11.
     7  */
     8 public class Main {
     9 
    10     /**
    11      * 题目:输入n个数(均大于0)以及可以对这n个数进行操作的最多次数,每次操作将n个数中最大值-1,
    12      * 最小值+1,计算进行这样的操作后数组中(最大值-最小值)的最小值。
    13      *
    14      * 总的思路:就是每次将数组中最大的元素和最小的元素取出进行计算即可。注意边界条件即可。
    15      */
    16 
    17 
    18     private static int aar_indexMax = 0;
    19     private static int aar_indexMin = 0;
    20 
    21     public static void main(String[] args) {
    22         Scanner sc = new Scanner(System.in);
    23         int towerNum = sc.nextInt();
    24         int opNum = sc.nextInt();
    25         int[] inputTowers = new int[towerNum];
    26 
    27         for (int i=0; i<towerNum; i++) {
    28             inputTowers[i] = sc.nextInt();
    29         }
    30 
    31         List<int []> resultList = new ArrayList<int[]>();
    32         int notStableValue = Integer.MAX_VALUE;
    33         int operationNum = 0;
    34         for (int j = 0;j < opNum; j++){
    35             GetMaxAndMinValueIndex(inputTowers);
    36             notStableValue = inputTowers[aar_indexMax] - inputTowers[aar_indexMin];
    37             if (notStableValue != 0) {
    38                     inputTowers[aar_indexMax]-=1;
    39                     inputTowers[aar_indexMin]+=1;
    40                     int []temp = new int[2];
    41                     temp[0] = aar_indexMax+1;
    42                     temp[1] = aar_indexMin+1;
    43                     resultList.add(temp);
    44                     operationNum = j+1;
    45             }else {
    46                 operationNum = j+1;
    47                 break;
    48             }
    49         }
    50 
    51         GetMaxAndMinValueIndex(inputTowers);
    52         notStableValue = inputTowers[aar_indexMax] - inputTowers[aar_indexMin];
    53         System.out.println(notStableValue + " " + operationNum);
    54 
    55         for (int[] temp :
    56                 resultList) {
    57             System.out.println(temp[0] + " " + temp[1]);
    58         }
    59 
    60     }
    61 
    62 
    63     public static void GetMaxAndMinValueIndex(int input[]){
    64         if(input.length>0){
    65             int aar_Max = input[0];
    66             int aar_Min = input[0];
    67             aar_indexMax = 0;
    68             aar_indexMin = 0;
    69             for(int i=0;i<input.length;i++){
    70                 if(input[i]>aar_Max){//比较后赋值
    71                     aar_indexMax = i;
    72                 }
    73                 if(input[i]<aar_Min){
    74                     aar_indexMin = i;
    75                 }
    76             }
    77         }
    78     }
    79 
    80 }
    专注搬砖,擅长搬砖砸自己的脚~~~ Email: ltwbuaa@163.com
  • 相关阅读:
    JavaScript函数调用
    JS数据类型&&typeof&&其他
    JavaScript闭包底层解析
    test
    C# 网页自动填表自动登录 .
    C#中没有id 没有name C#怎么点击按钮
    网页中403错误的含义
    C# 按钮置顶和隐藏
    C# webBrowser 屏蔽网页JS脚本错误弹窗
    HTML5 canvas globalCompositeOperation 设置绘图的顺序
  • 原文地址:https://www.cnblogs.com/TonvyLeeBlogs/p/9460533.html
Copyright © 2020-2023  润新知