本文主要是介绍第182~183场周赛,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 第182场周赛
- 1394. 找出数组中的幸运数
- 1395. 统计作战单位数
- 1396. 设计地铁系统
- 第 183 场周赛
- 1403. 非递增顺序的最小子序列
- 1404. 将二进制表示减到 1 的步骤数
- 1405. 最长快乐字符串
第182场周赛
1394. 找出数组中的幸运数
class Solution {
public:int findLucky(vector<int>& arr) {unordered_map<int ,int> m;for(auto i: arr){m[i]++;}int ans = -1;for(auto [key,value]:m){if(key==value){ans = max(ans,key);}}return ans;}
};
1395. 统计作战单位数
class Solution {
public:int numTeams(vector<int>& rating) {int n = rating.size();int ans = 0;for(int j=1;j<n-1;j++){int iless = 0, imore = 0;int kless = 0, kmore = 0;for(int i=j-1;i>=0;i--){if(rating[i] < rating[j]){iless++;}else if(rating[i] > rating[j]){imore++;}}for (int k = j + 1; k < n; ++k) {if (rating[k] < rating[j]) {++kless;}else if (rating[k] > rating[j]) {++kmore;}}ans+=iless*kmore+imore*kless;}return ans;}
};
1396. 设计地铁系统
参考代码
class UndergroundSystem {
public:unordered_map<string,unordered_map<string,pair<int,int>>> mp;unordered_map<int,pair<string,int>> mmp;UndergroundSystem() {}void checkIn(int id, string stationName, int t) {mmp[id].first = stationName;mmp[id].second = t;}void checkOut(int id, string stationName, int t) {int time = t-mmp[id].second;string startStation = mmp[id].first;mp[startStation][stationName].first += time;mp[startStation][stationName].second ++;}double getAverageTime(string startStation, string endStation) {auto c= mp[startStation][endStation];return c.first * 1.0 /c.second;}
};/*** Your UndergroundSystem object will be instantiated and called as such:* UndergroundSystem* obj = new UndergroundSystem();* obj->checkIn(id,stationName,t);* obj->checkOut(id,stationName,t);* double param_3 = obj->getAverageTime(startStation,endStation);*/
第 183 场周赛
1403. 非递增顺序的最小子序列
参考代码
sort排序
class Solution {
public:vector<int> minSubsequence(vector<int>& nums) {sort(nums.begin(),nums.end(),greater<int>());int sum=0;for(auto v:nums){sum+=v;}int ts = 0;for(int i=0;i<nums.size();i++){ts+=nums[i];if(ts>sum-ts){return vector<int>(nums.begin(),nums.begin()+i+1);}}return nums;}
};
1404. 将二进制表示减到 1 的步骤数
参考代码
class Solution {
public:int numSteps(string s) {int res = 0;bool c = 0;//表示进位for(int i=s.size()-1;i>0;--i){if(c){if(s[i]=='0'){res+=2;c=1;}else{res++;c=1;}}else{if(s[i]=='0'){res++;c=0;}else{res+=2;c=1;}}}if(c){res++;}return res;}
};
1405. 最长快乐字符串
这篇关于第182~183场周赛的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!