当前位置: 首页 > news >正文

网站建设 大公司小公司建设公司企业网站

网站建设 大公司小公司,建设公司企业网站,做销售的什么网站好,组织网站建设应该注意什么462. 最小操作次数使数组元素相等 II 给你一个长度为 n 的整数数组 nums ,返回使所有数组元素相等需要的最小操作数。 在一次操作中,你可以使数组中的一个元素加 1 或者减 1 。 示例 1: 输入:nums [1,2,3] 输出:2 …

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

给你一个长度为 n 的整数数组 nums ,返回使所有数组元素相等需要的最小操作数。

在一次操作中,你可以使数组中的一个元素加 1 或者减 1

示例 1:

输入:nums = [1,2,3]
输出:2
解释:
只需要两次操作(每次操作指南使一个元素加 1 或减 1):
[1,2,3] => [2,2,3] => [2,2,2]

示例 2:

输入:nums = [1,10,2,9]
输出:16

提示:

  • n==nums.lengthn == nums.lengthn==nums.length
  • 1<=nums.length<=1051 <= nums.length <= 10^51<=nums.length<=105
  • −109<=nums[i]<=109- 10^9 <= nums[i] <= 10^9109<=nums[i]<=109

思路:

每次可以对一个数组元素加一或者减一,求最小的改变次数。

这是个典型的相遇问题,移动距离最小的方式是所有元素都移动到中位数。理由如下:

  • m中位数abm 两边的两个元素,且 b > a
  • 要使 ab 相等,它们总共移动的次数为 b - a,这个值等于 (b - m) + (m - a)
  • 也就是把这两个数移动到中位数的移动次数

设数组长度为 N,则可以找到 N/2ab 的组合,使它们都移动到 m 的位置。

代码:(Java、C++)

Java

import java.util.Arrays;public class MinMoves2 {public static void main(String[] args) {// TODO Auto-generated method stubint[] nums = {1, 10, 2, 9};System.out.println(minMoves2(nums));}public static int minMoves2(int[] nums) {Arrays.sort(nums);int l = 0, h = nums.length - 1;int moves = 0;while(l < h) {moves += nums[h--] - nums[l++];}return moves;}
}

C++

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;class MinMoves2 {
public:int minMoves2(vector<int>& nums) {sort(nums.begin(), nums.end());int l = 0, h = nums.size() - 1;int moves = 0;while (l < h) {moves += nums[h--] - nums[l++];}return moves;}
};int main() {MinMoves2 m;vector<int> nums = {1,10,2,9 };cout << m.minMoves2(nums) << endl;system("pause");return 0;
}

运行结果:

在这里插入图片描述

复杂度分析:

  • 时间复杂度O(nlogn)O(nlogn)O(nlogn),其中 n 是数组 nums 的长度。排序需要 O(nlog⁡n)O(nlog⁡n)O(nlogn)的时间。
  • 空间复杂度O(logn)O(logn)O(logn)。排序需要 O(log⁡n)O(log⁡n)O(logn)的递归栈空间。

题目来源:力扣。

注:仅供学习参考, 如有不足,欢迎指正!

http://www.yayakq.cn/news/420984/

相关文章:

  • 提交您的网站哪个网站做室内效果图厉害
  • 网站内部链接如何进行优化建设社群是合法的营销平台吗
  • 彩票做网站网站建设分金手指专业二七
  • 一站式搭建单位网站
  • 简历怎么制作网站企业类网站模板免费下载
  • 试列出网站开发建设的步骤网站原创内容优化
  • 个人网页设计作品集什么是搜索引擎优化seo
  • 怎样申请免费的网站空间网站pc端建设
  • 代码素材网站成都php网站建设工程师
  • 成都市微信网站建设报价碑林网站制作
  • 可以免费注册网站怎样申请一个免费的网站空间
  • 网站做管理员功能代码c 做商务网站方便吗
  • 网站分享代码怎么加企业网站案例
  • 个人网站做公司网站wordpress注册登录右边
  • 怎样写企业网站建设方案什么网站做蔬菜生鲜比较好
  • 宜兴市城乡建设局网站wordpress app 生成6
  • 茂名网站制作策划怎么用idea做响应式网站
  • 给网站做排名优化学什么好处上海网站se0优化公司
  • 网站统计源码下载网站设计计划书模板
  • 网站建设与管理的体会网站建设目的及功能
  • 网站是怎么建成的视频多的网站建设
  • 天津黑曼巴网站建设wordpress图集
  • 微网站开发企业选择网络营销课程个人总结
  • 笔记本做系统哪个网站好装修贷
  • 天河高端网站建设南昌市城市建设档案馆网站
  • 国外的域名注册网站哪个好二手书交易网站开发背景分析
  • 做视电影网站赚钱吗中国主流媒体平台有哪些
  • 最好的扁平化网站衡阳建设企业网站
  • html5商城网站模板东莞今天特大新闻
  • 网站制作 电子商城想自己做网站推广