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

这篇具有很好参考价值的文章主要介绍了NO.453 最小操作次数使数组元素相等。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目

给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。

思路

本题要求,获取最小操作次数,即在满足所有元素均相等的情况下,操作次数最少。

由于本题无法确定最终元素均相等时,对于元素的大小,所以需要从题目中找规律。

我们可以假设:

最小移动次数为 count

设最终元素均相等时,数组的每一位数 为 fin

设数组的长度为 N

初始数组的总数为sum; 

初始数组中,最小的元素是 min 

我们可以得到的关系是:

这个公式的关键点,在于求出 fin 的关系

NO.453 最小操作次数使数组元素相等,算法,数据结构

带入上个公式得到:

NO.453 最小操作次数使数组元素相等,算法,数据结构

化简得到:

NO.453 最小操作次数使数组元素相等,算法,数据结构

NO.453 最小操作次数使数组元素相等,算法,数据结构文章来源地址https://www.toymoban.com/news/detail-604799.html

代码

public int minMoves(int[] nums) {
        Arrays.sort(nums);
        int min=nums[0];
        int sum=0;
        for(int i=0;i<nums.length;i++){
            sum+=nums[i];
        }

        return sum - (min * nums.length);
    }

到了这里,关于NO.453 最小操作次数使数组元素相等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 每日一题leetcode--使循环数组所有元素相等的最少秒数

    相当于扩散,每个数可以一次可以扩散到左右让其一样,问最少多少次可以让整个数组都变成一样的数 使用枚举,先将所有信息存到hash表中,然后逐一进行枚举,计算时间长短用看下图  考虑到环形数组,可以把首项+n放到最后,这样for循环就相当于前后可以联通 贴一张别

    2024年02月12日
    浏览(48)
  • 2615. 等值距离和;2771. 构造最长非递减子数组;2712. 使所有字符相等的最小成本

    2615. 等值距离和 核心思想:1.统计相同值的下标,为了方便等会求结果 。2.统计相同值的距离和。这道题的思路很像数学题,如果没人给提示很难想出来,有点像找规律的题目。对于一个下标a[i-1]其距离和为s,那么对于a[i](a[i]a[i-1]的 1.对于(a[0]-a[i-1])到a[i-1]的距离 = (a

    2024年02月16日
    浏览(29)
  • 【LeetCode 算法】Minimum Operations to Halve Array Sum 将数组和减半的最少操作次数-Greedy

    给你一个正整数数组 nums 。每一次操作中,你可以从 nums 中选择 任意 一个数并将它 减小 到 恰好 一半 。(注意,在后续操作中你可以对减半过的数继续执行操作) 请你返回将 nums 数组和 至少 减少一半 的 最少 操作数。 1 = n u m s . l e n g t h = 1 0 5 1 = n u m s [ i ] = 1 0 7 1 = num

    2024年02月15日
    浏览(45)
  • 数据结构与算法之堆: Leetcode 215. 数组中的第K个最大元素 (Typescript版)

    数组中的第K个最大元素 https://leetcode.cn/problems/kth-largest-element-in-an-array/ 描述 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此

    2024年02月07日
    浏览(51)
  • 每日一题——LeetCode1287.有序数组中出现次数超过25%的元素

    方法一 一次循环统计 题目给出的数据相同的元素都是相邻的,那么直接从头开始遍历,统计每种元素出现次数,当有元素次数超过arr.length/4即为要求的元素   消耗时间和内存情况: 方法二 方法一简化版 设步长step=arr.length/4,如果某个元素arr[i],跨越一个步长后arr[i+step],即

    2024年01月22日
    浏览(50)
  • 【动态规划】【C++算法】801. 使序列递增的最小交换次数

    【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径 动态规划汇总 数组 我们有两个长度相等且不为空的整型数组 nums1 和 nums2 。在一次操作中,我们可以交换 nums1[i] 和 nums2[i]的元素。 例如,如果 nums1 = [1,2,3,8] , nums2 =[5,6,7,4] ,你可以交换 i = 3 处的元素

    2024年01月22日
    浏览(43)
  • 将数组和减半的最少操作次数(力扣)

    给你一个正整数数组 nums 。每一次操作中,你可以从 nums 中选择 任意 一个数并将它减小到 恰好 一半。(注意,在后续操作中你可以对减半过的数继续执行操作) 请你返回将 nums 数组和 至少 减少一半的 最少 操作数。 示例 1: 示例 2: 每次操作,会将数组中的一个数减半。

    2024年02月16日
    浏览(36)
  • JS操作数组神器——reduce(求和、出现次数、去重、分类)

    reduce() 对数组每个元素执行一次由您提供的reduce函数(升序执行),将其结果汇总为单个返回值。 循环遍历能做的,reduce都可以做。比如数组根据元素某个属性求和、数组元素出现次数、数组去重、数组根据某个元素属性分类等等。 参数介绍 prev 必需。累计器累计回调的返回值

    2023年04月26日
    浏览(35)
  • 【数据结构和算法】最近的请求次数

    Java基础合集 数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 队列问题一般解法 2.2 方法一:队列 三、代码 3.1 方法一:队列 四、复杂度分析 4.1 方法一:队列 这是力扣的 933 题,难度为简单,解

    2024年02月01日
    浏览(44)
  • 【C++】【数据结构】循环队列的基本操作(初始化、入队、出队、取队头元素、遍历输出队列、求队列长度)顺序队列的算法实现【附全代码】

    使用c++完成数据结构循环队列的基本操作,包括(初始化、入队、出队、取队头元素、遍历输出队列、求队列长度等),可直接编译运行。 队列 又称为 “先进先出” (FIFO)线性表。限定插入操作只能在队尾进行,而删除操作只能在队首进行。 循环队列 ——采用 顺序存储结构

    2023年04月16日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包