最小操作次数使数组元素相等

  • Post author:
  • Post category:其他


输入:nums = [1,2,3]

输出:3

解释:

只需要3次操作(注意每次操作会增加两个元素的值):

[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/minimum-moves-to-equal-array-elements

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

test(arr) {
      let count = 0;
      let flag1 = true;
      let flag2;
      let max = 0
      for (let m = 0; m < arr.length; m++) {
        max+=arr[m]    //最多操作次数
      }
      for (let i = 0; i <  max; i++) {
      //先判断元素是否相等
        for (let l = 0; l < arr.length; l++) {
          for (let j = l + 1; j < arr.length; j++) {
            if (arr[l] != arr[j]) {
              flag1 = false;  //不相等时
            }
            flag2 = flag1;  
          }
        }
        //若不相等则进行如下操作
        if (!flag2) {
          //先按从小到大排序
          for (let m = 0; m < arr.length; m++) {
            for (let n = m + 1; n < arr.length; n++) {
              let temp;
              if (arr[m] > arr[n]) {
                temp = arr[m];
                arr[m] = arr[n];
                arr[n] = temp;
              }
            }
          }
          //最小的数加1
          for (let k = 0; k < arr.length - 1; k++) {
            //  console.log(arr);
            arr[k] = arr[k] + 1;
          }
          count++; //操作数+1
          //
          flag1 = true; //还原flag1
        } else {
          break;
        }
      }
      console.log(count, arr);
    }



版权声明:本文为Lilyxu1111原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。