From 51807bffc8dd7bf6c86a1727a2cc0b8fef3aad74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BD=A9=E8=BE=95=E9=BE=99=E5=84=BF?= Date: Wed, 25 May 2022 18:03:43 +0800 Subject: [PATCH] =?UTF-8?q?1675:=E6=95=B0=E7=BB=84=E7=9A=84=E6=9C=80?= =?UTF-8?q?=E5=B0=8F=E5=81=8F=E7=A7=BB=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/cn/MinimizeDeviationInArray.java | 90 +++++++++++++++++++ .../doc/content/MinimizeDeviationInArray.md | 57 ++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 src/main/java/leetcode/editor/cn/MinimizeDeviationInArray.java create mode 100644 src/main/java/leetcode/editor/cn/doc/content/MinimizeDeviationInArray.md diff --git a/src/main/java/leetcode/editor/cn/MinimizeDeviationInArray.java b/src/main/java/leetcode/editor/cn/MinimizeDeviationInArray.java new file mode 100644 index 0000000..5256bfc --- /dev/null +++ b/src/main/java/leetcode/editor/cn/MinimizeDeviationInArray.java @@ -0,0 +1,90 @@ +//

给你一个由 n 个正整数组成的数组 nums

+// +//

你可以对数组的任意元素执行任意次数的两类操作:

+// +// +// +//

数组的 偏移量 是数组中任意两个元素之间的 最大差值

+// +//

返回数组在执行某些操作之后可以拥有的 最小偏移量

+// +//

 

+// +//

示例 1:

+// +//
+//输入:nums = [1,2,3,4]
+//输出:1
+//解释:你可以将数组转换为 [1,2,3,2],然后转换成 [2,2,3,2],偏移量是 3 - 2 = 1
+//
+// +//

示例 2:

+// +//
+//输入:nums = [4,1,5,20,3]
+//输出:3
+//解释:两次操作后,你可以将数组转换为 [4,2,5,5,3],偏移量是 5 - 2 = 3
+//
+// +//

示例 3:

+// +//
+//输入:nums = [2,10,8]
+//输出:3
+//
+// +//

 

+// +//

提示:

+// +// +//
Related Topics
  • 贪心
  • 数组
  • 有序集合
  • 堆(优先队列)

  • 👍 64
  • 👎 0
  • +package leetcode.editor.cn; + +import java.util.*; + +// 1675:数组的最小偏移量 +public class MinimizeDeviationInArray { + public static void main(String[] args) { + Solution solution = new MinimizeDeviationInArray().new Solution(); + // TO TEST + } + + //leetcode submit region begin(Prohibit modification and deletion) + class Solution { + public int minimumDeviation(int[] nums) { + TreeSet treeSet = new TreeSet<>(); + for (int i = 0; i < nums.length; i++) { + if (nums[i] % 2 == 1) { + nums[i] *= 2; + } + treeSet.add(nums[i]); + } + int min = treeSet.last()- treeSet.first(); + while (treeSet.last()%2==0){ + int num = treeSet.pollLast(); + treeSet.add(num/2); + min =Math.min(min,treeSet.last()- treeSet.first()); + } + return min; + } + } +//leetcode submit region end(Prohibit modification and deletion) + +} diff --git a/src/main/java/leetcode/editor/cn/doc/content/MinimizeDeviationInArray.md b/src/main/java/leetcode/editor/cn/doc/content/MinimizeDeviationInArray.md new file mode 100644 index 0000000..19b4fd0 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/doc/content/MinimizeDeviationInArray.md @@ -0,0 +1,57 @@ +

    给你一个由 n 个正整数组成的数组 nums

    + +

    你可以对数组的任意元素执行任意次数的两类操作:

    + + + +

    数组的 偏移量 是数组中任意两个元素之间的 最大差值

    + +

    返回数组在执行某些操作之后可以拥有的 最小偏移量

    + +

     

    + +

    示例 1:

    + +
    +输入:nums = [1,2,3,4]
    +输出:1
    +解释:你可以将数组转换为 [1,2,3,2],然后转换成 [2,2,3,2],偏移量是 3 - 2 = 1
    +
    + +

    示例 2:

    + +
    +输入:nums = [4,1,5,20,3]
    +输出:3
    +解释:两次操作后,你可以将数组转换为 [4,2,5,5,3],偏移量是 5 - 2 = 3
    +
    + +

    示例 3:

    + +
    +输入:nums = [2,10,8]
    +输出:3
    +
    + +

     

    + +

    提示:

    + + +
    Related Topics
  • 贪心
  • 数组
  • 有序集合
  • 堆(优先队列)

  • 👍 64
  • 👎 0
  • \ No newline at end of file