当前位置:网站首页>LeetCode 6005. The minimum operand to make an array an alternating array
LeetCode 6005. The minimum operand to make an array an alternating array
2022-07-06 00:09:00 【Daylight629】
6005. The minimum number of operands to make an array an alternating array
I'll give you a subscript from 0 Starting array nums
, The array consists of n
It's made up of four positive integers .
If the following conditions are met , The array nums
It's a Alternating array :
nums[i - 2] == nums[i]
, among2 <= i <= n - 1
.nums[i - 1] != nums[i]
, among1 <= i <= n - 1
.
In one step operation in , You can choose the subscript i
And will nums[i]
change by any Positive integer .
Returns the that makes the array an alternating array The minimum number of operands .
Example 1:
Input :nums = [3,1,3,2,4,3]
Output :3
explain :
One way to turn an array into an alternating array is to convert the array to [3,1,3,1,3,1] .
under these circumstances , The operands are 3 .
Can prove that , Operands are less than 3 Under the circumstances , Cannot make an array into an alternating array .
Example 2:
Input :nums = [1,2,2,2,2]
Output :2
explain :
One way to turn an array into an alternating array is to convert the array to [1,2,1,2,1].
under these circumstances , The operands are 2 .
Be careful , Array cannot be converted to [2,2,2,2,2] . Because in this case ,nums[0] == nums[1], The condition of alternating array is not satisfied .
Tips :
1 <= nums.length <= 105
1 <= nums[i] <= 105
Two 、 Method 1
Count the most frequent occurrences of , Then find the one that appears the most and the second most , If it's not equal, subtract these , If equal, subtract the maximum sum
class Solution {
public int minimumOperations(int[] nums) {
Map<Integer, Integer> map1 = new HashMap<>();
Map<Integer, Integer> map2 = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if ((i & 1) == 1) {
map1.put(nums[i], map1.getOrDefault(nums[i], 0) + 1);
} else {
map2.put(nums[i], map2.getOrDefault(nums[i], 0) + 1);
}
}
int x1 = 0;
int x2 = 0;
int y1 = 0;
int y2 = 0;
int a = 0;
int b = 0;
int c = 0;
int d = 0;
for (Map.Entry<Integer,Integer> entry : map1.entrySet()) {
if (entry.getValue() > a) {
b = a;
a = entry.getValue();
x1 = entry.getKey();
}
else if (entry.getValue() > b) {
b = entry.getValue();
}
}
for (Map.Entry<Integer,Integer> entry : map2.entrySet()) {
if (entry.getValue() > c) {
d = c;
c = entry.getValue();
y1 = entry.getKey();
}
else if (entry.getValue() > d) {
d = entry.getValue();
}
}
if (x1 == y1) {
return nums.length - Math.max(a + d, b + c);
} else {
return nums.length - (a + c);
}
}
}
Complexity analysis
Time complexity :O(n).
Spatial complexity :O(n).
边栏推荐
- Tips for using pads router
- 18. (ArcGIS API for JS) ArcGIS API for JS point collection (sketchviewmodel)
- Transport layer protocol ----- UDP protocol
- Miaochai Weekly - 8
- What are the functions of Yunna fixed assets management system?
- Priority queue (heap)
- Laser slam learning record
- 7.5 decorator
- Global and Chinese market of water heater expansion tank 2022-2028: Research Report on technology, participants, trends, market size and share
- JS can really prohibit constant modification this time!
猜你喜欢
How much do you know about the bank deposit business that software test engineers must know?
Browser local storage
行列式学习笔记(一)
openssl-1.0.2k版本升级openssl-1.1.1p
Mathematical model Lotka Volterra
"14th five year plan": emphasis on the promotion of electronic contracts, electronic signatures and other applications
云呐|固定资产管理系统功能包括哪些?
My colleagues quietly told me that flying Book notification can still play like this
如何解决ecology9.0执行导入流程流程产生的问题
MySql——CRUD
随机推荐
MySQL functions
XML configuration file (DTD detailed explanation)
上门预约服务类的App功能详解
Hudi of data Lake (1): introduction to Hudi
Global and Chinese market of water heater expansion tank 2022-2028: Research Report on technology, participants, trends, market size and share
[Luogu cf487e] tours (square tree) (tree chain dissection) (line segment tree)
激光slam学习记录
Miaochai Weekly - 8
Key structure of ffmpeg - avformatcontext
Which side projects can be achieved? Is it difficult for we media to earn more than 10000 a month?
选择致敬持续奋斗背后的精神——对话威尔价值观【第四期】
Initialize your vector & initializer with a list_ List introduction
7.5模拟赛总结
2022.7.5-----leetcode.729
What is information security? What is included? What is the difference with network security?
提升工作效率工具:SQL批量生成工具思想
Mysql - CRUD
Redis high availability - master-slave replication, sentinel mode, cluster
总结了 800多个 Kubectl 别名,再也不怕记不住命令了!
认识提取与显示梅尔谱图的小实验(观察不同y_axis和x_axis的区别)