Leetcode周赛277
2022/2/1 6:57:50
本文主要是介绍Leetcode周赛277,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 未掌握:二进制枚举 状态压缩
- # 元素计数
- # 找出数组中所有孤独数字
- # 按符号重排数组
- # 基于陈述统计的最多好人数
# 元素计数
【传送门】:https://leetcode-cn.com/problems/count-elements-with-strictly-smaller-and-greater-elements/
签到题,排序后遍历一下就可以了
solution:
class Solution { public: int countElements(vector<int>& nums) { sort(nums.begin(),nums.end()); int n=nums.size(); int ans=0; for(int i=1;i<n;i++) { if(nums[i]>nums[0]&&nums[i]<nums[n-1]) {ans++;} } return ans; } };
# 找出数组中所有孤独数字
【传送门】:https://leetcode-cn.com/problems/find-all-lonely-numbers-in-the-array/
签到题,进行排序后遍历就可以了
solution:
ps:写的有点丑,但是为了a题,也就是无所谓啦
class Solution { public: vector<int> findLonely(vector<int>& nums) { int n=nums.size(); vector<int> ans; if(n==1) { ans.push_back(nums[0]); return ans; } sort(nums.begin(),nums.end()); for(int i=0;i<n;i++) { if(i==0) { if(nums[i]!=nums[i+1]&&nums[i]+1!=nums[i+1]&&nums[i]-1!=nums[i+1]) ans.push_back(nums[i]); } else if(i==n-1) { if(nums[i]!=nums[i-1]&&nums[i]+1!=nums[i-1]&&nums[i]-1!=nums[i-1]) ans.push_back(nums[i]); } else { if(nums[i]!=nums[i+1]&&nums[i]+1!=nums[i+1]&&nums[i]-1!=nums[i+1]&&nums[i]!=nums[i-1]&&nums[i]+1!=nums[i-1]&&nums[i]-1!=nums[i-1]) ans.push_back(nums[i]); } } return ans; } };
# 按符号重排数组
【传送门】:https://leetcode-cn.com/problems/rearrange-array-elements-by-sign/
签到题,无语了,直接遍历,存一下就好了。
solution:
class Solution { public: vector<int> rearrangeArray(vector<int>& nums) { int n=nums.size(); vector<int> da(n/2); vector<int> xiao(n/2); int cnt1=0,cnt2=0; for(int i=0;i<n;i++) { if(nums[i]>0) {da[cnt1++]=nums[i];} else {xiao[cnt2++]=nums[i];} } cnt1=0,cnt2=0; int count=1; for(int i=0;i<n;i++) { nums[i]=count%2==0?xiao[cnt2++]:da[cnt1++]; count++; } return nums; } };
# 基于陈述统计的最多好人数
【传送门】:https://leetcode-cn.com/problems/maximum-good-people-based-on-statements/
题目出到了知识盲点,考察状态压缩与二进制枚举,观察题目数据范围并不大,所以可以直接采用暴力搜索即可
solution:
class Solution { public: int maximumGood(vector<vector<int>>& s) { int n = s.size(); int mask = (1 << n); int ans = 0; for (int i = 0; i < mask; i++) { // 考虑 0 到 2^n - 1 种情况中的值 bool flag = true; for (int j = 0; j < n; j++) { // 对于每一个值考虑每一位具体是 0 还是 1 if ((i >> j) & 1) { // 如果 i 的第 j 位等于 1, 就说明这种 mask 中的这一位存在 // j 是好人的情况下,根据 statesment[j][k] 计算其他人是好人还是坏人 for (int k = 0; k < s[j].size(); k++) { if (s[j][k] == 2) continue; if ((s[j][k] == 1 && ((i >> k) & 1) == 0) || (s[j][k] == 0 && ((i >> k) & 1) == 1)) { // 如果出现了陈述的状态和当前 mask 表示的状态不同的情况 flag = false; break; // 就可以快进到下一种情况 } } } } if (flag) { // 如果存在一种 mask 正确的遍历完成的话 ans = max(ans, __builtin_popcount(i)); //——builtin_popcount(i)----->找到并输出i的二进制1的个数 } } return ans; } };
这篇关于Leetcode周赛277的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-30uniAPP 实现全屏左右滚动滚动的效果-icode9专业技术文章分享
- 2024-06-30如何在本地使用授权或插件-icode9专业技术文章分享
- 2024-06-30伪静态规则配置方法汇总-icode9专业技术文章分享
- 2024-06-29易优CMS安装常见问题汇总-icode9专业技术文章分享
- 2024-06-28易优新手必读安装教程-icode9专业技术文章分享
- 2024-06-28忘记eyoucms后台密码怎么办?-icode9专业技术文章分享
- 2024-06-26终极指南:Scrum中如何设置需求优先级
- 2024-06-26AI大模型企业应用实战(25)-为Langchain Agent添加记忆功能
- 2024-06-26小白家庭 nas 搭建方案-icode9专业技术文章分享
- 2024-06-23AI大模型企业应用实战(14)-langchain的Embedding