• [Swift]LeetCode453. 最小移动次数使数组元素相等 | Minimum Moves to Equal Array Elements


    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/9790914.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n - 1 elements by 1.

    Example:

    Input:
    [1,2,3]
    
    Output:
    3
    
    Explanation:
    Only three moves are needed (remember each move increments two elements):
    
    [1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]

    给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。

    示例:

    输入:
    [1,2,3]
    
    输出:
    3
    
    解释:
    只需要3次移动(注意每次移动会增加两个元素的值):
    
    [1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]

    56ms
     1 class Solution {
     2     func minMoves(_ nums: [Int]) -> Int {
     3         var min = nums.first!
     4         var sum = 0
     5         for num in nums {
     6             sum += num
     7             if num < min {
     8                 min = num
     9             }
    10         }
    11         return sum - nums.count*min
    12     }
    13 }

    84ms

     1 class Solution {
     2     func minMoves(_ nums: [Int]) -> Int {
     3         var minNum = Int.max
     4         var sum = 0
     5         for num in nums {
     6             sum += num
     7             minNum = min(minNum, num)
     8         }
     9 
    10         return sum - minNum * nums.count
    11     }
    12 }

    88ms

    1 class Solution {
    2     func minMoves(_ nums: [Int]) -> Int {
    3         let min = nums.min()!
    4         return nums.reduce(0 ,{$0 + $1}) - min * nums.count
    5     }
    6 }

    104ms

     1 class Solution {
     2     func minMoves(_ nums: [Int]) -> Int {
     3         if nums.isEmpty { return 0 }
     4         var mini = nums[0]
     5         
     6         for num in nums {
     7             mini = min(num, mini)
     8         }
     9     
    10         var res = 0
    11         for num in nums {
    12             res += num - mini
    13         }
    14         return res
    15     }
    16 }

    116ms

    1 class Solution {
    2     func minMoves(_ nums: [Int]) -> Int {
    3         let min = nums.min()!
    4 
    5         return nums.reduce(0) { total, num in total + num - min }
    6     }
    7 }
  • 相关阅读:
    linux常用命令的英文单词缩写
    Servlet Struts2 SpringMVC 获取参数与导出数据 方法比较
    Spring 整合Mybatis Mapper动态代理方法
    Spring 整合Mybatis dao原始方法
    Mybatis Mapper动态代理方式 typeAliases 别名的使用
    MySQL 高性能优化实战总结
    Chrome 浏览器最牛插件之一 Vimium
    Spring Cloud-微服务架构集大成者
    单点登录原理与简单实现
    Spring-WebSocket 教程
  • 原文地址:https://www.cnblogs.com/strengthen/p/9790914.html
Copyright © 2020-2023  润新知