Leetcode第 277 场周赛题解

5989. 元素计数

不等于最大或最小元素 统计一下有多少个即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public:
int countElements(vector<int>& a) {
sort(a.begin(),a.end());
int n = a.size();
int ans = 0;
for(int i=0;i<a.size();i++)
{
if(a[i]!=a[0]&&a[i]!=a[n-1]) ans++;
}
return ans;
}
};

5991. 按符号重排数组

双指针即刻,复杂度O(n)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
public:
vector<int> rearrangeArray(vector<int>& nums) {
int l = 0,r = 0;
int n = nums.size();
vector<int>ans;
while(ans.size()!=n)
{
while(l<n)
{
if(nums[l]>0)
{
ans.push_back(nums[l]);
l++;
break;
}
else l++;
}

while(r<n)
{
if(nums[r]<0)
{
ans.push_back(nums[r]);
r++;
break;
}
else r++;
}
}
return ans;
}
};

5990. 找出数组中的所有孤独数字

遍历一下即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
vector<int> findLonely(vector<int>& a) {
map<int,int>v2cnt;
for(auto x:a)
{
// cout<<x<<endl;
v2cnt[x]++;
}
vector<int>ans;
set<int>res;
for(auto [val,cnt]:v2cnt)
{
//cout<<val<<" "<<cnt<<endl;
if(cnt==1&&v2cnt[val+1]==0&&v2cnt[val-1]==0) res.insert(val);
}
for(auto x:res) ans.push_back(x);
return ans;
}
};

5992. 基于陈述统计最多好人数

简单题,直接二进制枚举然后O(n^2)check枚举的正确性即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
public:
int maximumGood(vector<vector<int>>& s) {
int n = s.size();
int ans = 0;
for(int i=0;i<(1<<n);i++)
{
vector<int>p(n);
int odd = 0;
for(int j=0;j<n;j++)
{
p[n-j-1] = (i>>j)%2;
if(p[n-j-1]==1) odd++;
}
bool ok = true;
for(int x=0;x<n;x++)
{
for(int y=0;y<n;y++)
{
if(p[x]==1)
{
if(s[x][y]==1&&p[y]==0) {ok = false;break;}
if(s[x][y]==0&&p[y]==1) {ok = false;break;}
}
}
if(!ok) break;
}
if(!ok) continue;
else ans = max(ans, odd);
}
return ans;
}
};

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!