首页 > 其他分享 >困难-2449. 使数组相似的最少操作次数

困难-2449. 使数组相似的最少操作次数

时间:2022-10-29 11:47:25浏览次数:69  
标签:return target nums 相似 2449 number 最少 数组

给你两个正整数数组 nums 和 target ,两个数组长度相等。

在一次操作中,你可以选择两个 不同 的下标 i 和 j ,其中 0 <= i, j < nums.length ,并且:

令 nums[i] = nums[i] + 2 且
令 nums[j] = nums[j] - 2 。
如果两个数组中每个元素出现的频率相等,我们称两个数组是 相似 的。

请你返回将 nums 变得与 target 相似的最少操作次数。测试数据保证 nums 一定能变得与 target 相似。

 

示例 1:

输入:nums = [8,12,6], target = [2,14,10]
输出:2
解释:可以用两步操作将 nums 变得与 target 相似:
- 选择 i = 0 和 j = 2 ,nums = [10,12,4] 。
- 选择 i = 1 和 j = 2 ,nums = [10,14,2] 。
2 次操作是最少需要的操作次数。
示例 2:

输入:nums = [1,2,5], target = [4,1,3]
输出:1
解释:一步操作可以使 nums 变得与 target 相似:
- 选择 i = 1 和 j = 2 ,nums = [1,4,3] 。
示例 3:

输入:nums = [1,1,1,1,1], target = [1,1,1,1,1]
输出:0
解释:数组 nums 已经与 target 相似。
 

提示:

n == nums.length == target.length
1 <= n <= 105
1 <= nums[i], target[i] <= 106
nums 一定可以变得与 target 相似。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-number-of-operations-to-make-arrays-similar
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

/**
 * @param {number[]} nums
 * @param {number[]} target
 * @return {number}
 */
var makeSimilar = function(nums, target) {
   const arr1=nums.map(function(p){
       if(p%2===0){
           return -p
       }
       return p
   }).sort((p1,p2)=>p1-p2)
    const arr2=target.map(function(p){
        if(p%2===0){
           return -p
       }
       return p
   }).sort((p1,p2)=>p1-p2)
   let total=0
   for(let i=0;i<arr1.length;i++){
       const num=Math.abs(arr1[i]-arr2[i])/4
       total=total+num
   }
    return total
};

 

标签:return,target,nums,相似,2449,number,最少,数组
From: https://www.cnblogs.com/caoke/p/16838389.html

相关文章

  • JS中搜索数组的四种方法
    前端经常要通过javaScript来处理数组中的数据,其中就包括检查数组中是否包含满足特定搜索条件的单个或者多个值,这就需要我们关于用于确认的布尔值、数组中值得位置索引或包含......
  • 扁平数组转树结构
    <!DOCTYPEhtml><htmllang="en"> <head> <title></title> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width,initial-scale=1"> <......
  • 将1000内素数放入数组
    #include<stdio.h>intmain(){inti=0;intj=0;inttemp=0;intarr[1000]={};for(i=2;i<1000;i++){ for(j=2;j<i;j++){ if(i%j==0){ break;}} if(......
  • 1879. 两个数组最小的异或值之和
    题目描述给了两个数组nums1和nums2,长度都是n,问怎么排列可以让数组对应元素的异或值之和最小?f1-二进制枚举+状态压缩基本分析1.有没有是啥贪心做法,因为看到相同元素异或......
  • JS删除两个数组对象中id相同的对象
    letarr1=[{id:'1',name:'json'},{id:'2',name:'book'}]letarr2=[{id:'1',name:'json',age:'15'},{id:'2',name:'book',age:'16'},{id:'3',name:'......
  • 【BZOJ1818】【CQOI2010】【XSY2428】内部白点(树状数组+扫描线)
    先把所有点的\(x\)坐标离散化。然后分别将所有点按\(x\)、\(y\)排序。这里以按\(x\)排序为例,对于\(x\)坐标相同的两个点,我们把它们连成一条线段。那么按\(y\)坐标排序也一......
  • 最大子数组之和完成心得--贪心算法的应用
    intpre=0,maxAns=nums[0];for(intx:nums){pre=Math.max(pre+x,x);maxAns=Math.max(maxAns,pre);}......
  • JS数组对象排序
    原文地址:https://blog.csdn.net/qq_37899792/article/details/88655920利用数组api——>sort来进行排序varperson=[{name:"Rom",age:12},{name:"Bob",age:22},{name:......
  • C#后端接收前端json数组
    C#后端接收前端json数组方案一:///<summary>///(APP端)查询购物车选中商品的总价///</summary>publicclassCartTotalPriceRequestDto{/......
  • js-2-数组部分
      创建数组的两种方式:1,利用数组字面量vararr= [1,2,3];2,利用newArray()vararr=newArray();创建一个长度为2的数组vararr1=newArray(2); <script>......