665. 非递减数列 – 力扣(LeetCode)
给你一个长度为n
的整数数组nums
,请你判断在最多改变1
个元素的情况下,该数组能否变成一个非递减数列。
我们是这样定义一个非递减数列的:对于数组中任意的i
(0 ,总满足
nums[i] 。
解题思路
遍历数组,计算递减对,显然当递减对>1时,不满足条件,当递减对=0时,满足条件。容易忽视的时当递减对=1时的情况:
代码实现
class Solution {
public:
bool checkPossibility(vector& nums) {
int count = 0;
int temp = -1;
for(int i = 0; i nums[i+1]){
count++;
temp = i;
}
}
if(count>1){
return false;
}
if(count==0){
return true;
}
if(temp==0||nums[temp-1]
2032. 至少在两个数组中出现的值 – 力扣服务器托管网(LeetCode)
给你三个整数数组nums1
、nums2
和nums3
,请你构造并返回一个元素各不相同的数组,且由至少在两个数组中出现的所有值组成。数组中的元素可以按任意顺序排列。
解题思路
1统计每个元素的出现次数:定义哈希表,遍历每个数组,然后对出现的元素进行异或处理。
2 筛选出出现次数≥2的元素:然后根据得到的异或结果再进行与运算。
3 具体操作解析如下:
如果元素在2个或3个数组中出现过,那么它的与运算(v&(v-1))的二进制结果中仍有1存在(即结果不为0),将符合条件的该元素加进结果数组中即可。
代码实现
class Solution {
public:
vector twoOutOfThree(vector& nums1, vector& nums2, vector& nums3) {
unordered_map mp;
for (auto& i : nums1) {
mp[i] = 1;
}
for (auto& i : nums2) {
mp[i] |= 2;
}
for (auto& i : nums3) {
mp[i] |= 4;
}
vector res;
for (auto& [k, v] : mp) {
if (v & (v - 1)) {
res.push_back(k);
}
}
return res;
}
};
2170. 使数组变成交替数组的最少操作数 – 力扣(LeetCode)
给你一个下标从0开始的数组nums
,该数组由n
个正整数组成。
如果满足下述条件,则数组nums
是一个交替数组:
-
nums[i - 2] == nums[i]
,其中2 。
-
nums[i - 1] != nums[i]
,其中1 。
在一步操作中,你可以选择下标i
并将nums[i]
更改为任一正整数。
返回使数组变成交替数组的最少操作数。
解题思路
声明两个哈希表,分别存储数组中奇数位和偶数位的元素的出现次数。
①先处理一般情况,当奇数位和偶数位出现次数最多的元素不相同的时候,显然只需保留这两种元素,对其他值进行修改即可。
②当奇数位和偶数位出现次数最多的元素相同时,我们只能选择“奇数位出现次数最多的元素+偶数位出现次数第二多的元素”,“偶数位出现次数最多的元素+奇数位出现次数第二多的元素”中较大的一个,然后对剩余的数进行修改。
理清了思路,现在来看具体操作:
1 遍历数组,更新哈希表的值(也就是统计奇偶数位各数的出现次数)
2 定义若干变量记录奇偶位出现次数最多和第二多的键和键值。通过遍历奇偶哈希表获得所需要的值。
3 添加判断条件,即②中的步骤。最后返回即可。
代码实现
class Solution {
public:
int minimumOperations(vector& nums) {
unordered_map odd;
unordered_map even;
for(int i = 0; i second >= oddMax){
oddSecondMax = oddMax;
oddMax = it->second;
oddMaxKey = it->first;
} else if(it->second > oddSecondMax){
oddSecondMax = it->second;
}
}
for(auto it = even.begin(); it != even.end(); it++){
if(it->second >= evenMax){
evenSecondMax = evenMax;
evenMax = it->second;
evenMaxKey = it->first;
} else if(it->second > evenSecondMax){
evenSecondMax = it->second;
服务器托管网 }
}
if(oddMaxKey!=evenMaxKey){
return nums.size()-oddMax-evenMax;
}
return nums.size()- max(oddMax + evenSecondMax, evenMax + oddSecondMax);
}
};
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 通过 NFTScan NFT API 轻松实现 NFT 交易监控
随着 NFT 领域的不断发展,与任何其他资产一样,NFT 也面临着安全和市场波动的风险,那么对 NFT 链上交易的监控将成为行业中的标配。作为 NFT 生态系统的关键组成部分,监控 NFT 链上交易不仅是保护资产的重要手段,还是获取市场洞察和优化决策的关键工具…