ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

第 174 场双周赛Q2——3810. 变成目标数组的最少操作次数

第 174 场双周赛Q2——3810. 变成目标数组的最少操作次数

题目链接:3810. 变成目标数组的最少操作次数(中等)

算法原理:

解法:模拟

38ms击败11.30%

时间复杂度O(N)

①先计算出哪些是需要修改的

②统计需要修改的下标

③原数组中相同的数可以一起修改,所以只要统计不同的数有多少个即可

Java代码:

class Solution { public int minOperations(int[] nums, int[] target) { int n=nums.length; int[] diff=new int[n]; //先计算出哪些是需要修改的 for(int i=0;i<n;i++) diff[i]=target[i]-nums[i]; //统计需要修改的下标 List<Integer> list=new ArrayList<>(); for(int i=0;i<n;i++) if(diff[i]!=0) list.add(i); //原数组中相同的数可以一起修改,所以只要统计不同的数有多少个即可 Set<Integer> hash=new HashSet<>(); for(int x:list) hash.add(nums[x]); return hash.size(); } }
返回列表