From 592c7d900656b06326496d31cc071cb2685e3083 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Fri, 8 Oct 2021 15:21:35 +0800 Subject: [PATCH] =?UTF-8?q?517:=E8=B6=85=E7=BA=A7=E6=B4=97=E8=A1=A3?= =?UTF-8?q?=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/cn/SuperWashingMachines.java | 85 +++++++++++++++++++ .../editor/cn/doc/content/PathSumIii.md | 33 +++++++ .../cn/doc/content/SuperWashingMachines.md | 48 +++++++++++ 3 files changed, 166 insertions(+) create mode 100644 src/main/java/leetcode/editor/cn/SuperWashingMachines.java create mode 100644 src/main/java/leetcode/editor/cn/doc/content/PathSumIii.md create mode 100644 src/main/java/leetcode/editor/cn/doc/content/SuperWashingMachines.md diff --git a/src/main/java/leetcode/editor/cn/SuperWashingMachines.java b/src/main/java/leetcode/editor/cn/SuperWashingMachines.java new file mode 100644 index 0000000..ee52e0c --- /dev/null +++ b/src/main/java/leetcode/editor/cn/SuperWashingMachines.java @@ -0,0 +1,85 @@ +//假设有 n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。 +// +// 在每一步操作中,你可以选择任意 m (1 <= m <= n) 台洗衣机,与此同时将每台洗衣机的一件衣服送到相邻的一台洗衣机。 +// +// 给定一个整数数组 machines 代表从左至右每台洗衣机中的衣物数量,请给出能让所有洗衣机中剩下的衣物的数量相等的 最少的操作步数 。如果不能使每台洗衣 +//机中衣物的数量相等,则返回 -1 。 +// +// +// +// 示例 1: +// +// +//输入:machines = [1,0,5] +//输出:3 +//解释: +//第一步: 1 0 <-- 5 => 1 1 4 +//第二步: 1 <-- 1 <-- 4 => 2 1 3 +//第三步: 2 1 <-- 3 => 2 2 2 +// +// +// 示例 2: +// +// +//输入:machines = [0,3,0] +//输出:2 +//解释: +//第一步: 0 <-- 3 0 => 1 2 0 +//第二步: 1 2 --> 0 => 1 1 1 +// +// +// 示例 3: +// +// +//输入:machines = [0,2,0] +//输出:-1 +//解释: +//不可能让所有三个洗衣机同时剩下相同数量的衣物。 +// +// +// +// +// 提示: +// +// +// n == machines.length +// 1 <= n <= 10⁴ +// 0 <= machines[i] <= 10⁵ +// +// Related Topics 贪心 数组 👍 174 👎 0 + +package leetcode.editor.cn; + +import javax.swing.plaf.IconUIResource; + +//517:超级洗衣机 +class SuperWashingMachines { + public static void main(String[] args) { + //测试代码 + Solution solution = new SuperWashingMachines().new Solution(); + } + + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) + class Solution { + public int findMinMoves(int[] machines) { + int sum = 0; + for (int num : machines) { + sum += num; + } + if (sum % machines.length > 0) { + return -1; + } + int avg = sum / machines.length; + int bef = 0; + int result = 0; + for (int machine : machines) { + bef += machine - avg; + result = Math.max(result, Math.max(machine - avg, Math.abs(bef))); + } + return result; + } + } +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/doc/content/PathSumIii.md b/src/main/java/leetcode/editor/cn/doc/content/PathSumIii.md new file mode 100644 index 0000000..91fbc95 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/doc/content/PathSumIii.md @@ -0,0 +1,33 @@ +

给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum路径 的数目。

+ +

路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。

+ +

 

+ +

示例 1:

+ +

+ +
+输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8
+输出:3
+解释:和等于 8 的路径有 3 条,如图所示。
+
+ +

示例 2:

+ +
+输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
+输出:3
+
+ +

 

+ +

提示:

+ + +
Related Topics
  • 深度优先搜索
  • 二叉树

  • 👍 1054
  • 👎 0
  • \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/doc/content/SuperWashingMachines.md b/src/main/java/leetcode/editor/cn/doc/content/SuperWashingMachines.md new file mode 100644 index 0000000..5948e9b --- /dev/null +++ b/src/main/java/leetcode/editor/cn/doc/content/SuperWashingMachines.md @@ -0,0 +1,48 @@ +

    假设有 n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。

    + +

    在每一步操作中,你可以选择任意 m (1 <= m <= n) 台洗衣机,与此同时将每台洗衣机的一件衣服送到相邻的一台洗衣机。

    + +

    给定一个整数数组 machines 代表从左至右每台洗衣机中的衣物数量,请给出能让所有洗衣机中剩下的衣物的数量相等的 最少的操作步数 。如果不能使每台洗衣机中衣物的数量相等,则返回 -1

    + +

     

    + +

    示例 1:

    + +
    +输入:machines = [1,0,5]
    +输出:3
    +解释:
    +第一步:    1     0 <-- 5    =>    1     1     4
    +第二步:    1 <-- 1 <-- 4    =>    2     1     3    
    +第三步:    2     1 <-- 3    =>    2     2     2   
    +
    + +

    示例 2:

    + +
    +输入:machines = [0,3,0]
    +输出:2
    +解释:
    +第一步:    0 <-- 3     0    =>    1     2     0    
    +第二步:    1     2 --> 0    =>    1     1     1     
    +
    + +

    示例 3:

    + +
    +输入:machines = [0,2,0]
    +输出:-1
    +解释:
    +不可能让所有三个洗衣机同时剩下相同数量的衣物。
    +
    + +

     

    + +

    提示:

    + + +
    Related Topics
  • 贪心
  • 数组

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