lc.2148 元素计数
给你一个整数数组 nums ,统计并返回在 nums 中同时具有一个严格较小元素和一个严格较大元素的元素数目。
class Solution {
public:
int countElements(vector<int>& nums) {
int n = nums.size() , cnt = 0 ;
sort(nums.begin() , nums.end());
if(nums[0] == nums[n - 1]) return 0;
for(int i = 0 ; i < n ; i ++){
if(nums[i] != nums[0] && nums[i] != nums[n-1]) cnt ++;
}
return cnt;
}
};
lc.2149 按符号重排数组
给你一个下标从 0 开始的整数数组 nums ,数组长度为 偶数 ,由数目相等的正整数和负整数组成。
你需要 重排 nums 中的元素,使修改后的数组满足下述条件:
任意 连续 的两个整数 符号相反
对于符号相同的所有整数,保留 它们在 nums 中的 顺序 。
重排后数组以正整数开头。
重排元素满足上述条件后,返回修改后的数组。
class Solution {
public:
vector<int> rearrangeArray(vector<int>& nums) {
int n = nums.size();
vector<int> z , f;
for(int i = 0 ; i < n ; i ++){
if(nums[i] > 0) z.emplace_back(nums[i]);
else f.emplace_back(nums[i]);
}
for(int i = 0 ; i < n ; i ++){
if(i % 2 == 0) nums[i] = z[i / 2];
else nums[i] = f[i / 2];
}
return nums;
}
};
开两个数组居然通过了。
lc.2150 寻找孤独数字
class Solution {
public:
vector<int> findLonely(vector<int>& nums) {
vector<int> ans;
int n = nums.size();
if(n == 1){
ans.emplace_back(nums[0]);
return ans;
}
sort(nums.begin(),nums.end());
if(nums[1] > nums[0] + 1) ans.emplace_back(nums[0]);
if(nums[n-1] > nums[n-2] + 1) ans.emplace_back(nums[n-1]);
for(int i = 1 ; i < n - 1 ; i ++){
if(nums[i+1] > nums[i] + 1 && nums[i] > nums[i - 1] + 1) ans.emplace_back(nums[i]);
}
return ans;
}
};
lc.2151 统计最多好人可能
游戏中存在两种角色:
好人:该角色只说真话。
坏人:该角色可能说真话,也可能说假话。
给你一个下标从 0 开始的二维整数数组 statements ,大小为 n x n ,表示 n 个玩家对彼此角色的陈述。具体来说,statements[i][j] 可以是下述值之一:
0 表示 i 的陈述认为 j 是 坏人 。
1 表示 i 的陈述认为 j 是 好人 。
2 表示 i 没有对 j 作出陈述。
另外,玩家不会对自己进行陈述。形式上,对所有 0 <= i < n ,都有 statements[i][i] = 2 。
根据这 n 个玩家的陈述,返回可以认为是 好人 的 最大 数目。
- 枚举
class Solution {
public:
int maximumGood(vector<vector<int>> &statements) {
int ans = 0, n = statements.size();
for (int i = 1; i < 1 << n; ++i) {
int cnt = 0; // i 中好人个数
for (int j = 0; j < n; ++j) {
if ((i >> j) & 1) { // 枚举 i 中的好人 j
for (int k = 0; k < n; ++k) { // 枚举 j 的所有陈述
if (statements[j][k] < 2 && statements[j][k] != ((i >> k) & 1)) { // 该陈述与实际情况矛盾
goto next;
}
}
++cnt;
}
}
ans = max(ans, cnt);
next:;
}
return ans;
}
};