力扣312场:竞赛 - 力扣 (LeetCode)
1.力扣
用哈希表来储存身高排名,将身高从小到大排序,利用哈希表找到 names 数组中的人,顺序就是由高到矮的顺序
class Solution {
public:
vector<string> sortPeople(vector<string>& names, vector<int>& heights) {
map<int,int> mp;
for(int i=0;i<heights.size();i++)
{
mp[heights[i]]=i;
}
int n=heights.size();
sort(heights.begin(),heights.end(),greater<int>());
vector<string> ans(n);
for(int i=0;i<n;i++)
{
ans[i]=names[mp[heights[i]]];
}
return ans;
}
};
2.力扣
按位与性质 (位运算(按位与、按位或、异或)_Wanidde的博客-优快云博客_位与运算)
找数组中最大值的最长连续序列的长度
class Solution {
public:
int longestSubarray(vector<int>& nums) {
int n = nums.size(), ans = 0, tmp = 0;
int m = *max_element(nums.begin(), nums.end());
for(int i = 0; i < n; ++i) {
if(nums[i] == m) {
++tmp;
} else {
tmp = 0;
}
ans = max(ans, tmp);
}
return ans;
}
};
AcWing70场周赛:登录 - AcWing
判断素数,输出
#include <iostream>
using namespace std;
int x;
bool is_prime (int x) {
if (x == 1) return false;
for (int i = 2;i * i <= x;i++) {
if (x % i == 0) return false;
}
return true;
}
int main () {
cin >> x;
for (int i = 1;i * i <= x;i++) {
if (x % i == 0 && is_prime (i) && is_prime (x / i)) {
cout << i << ' ' << x / i << endl;
return 0;
}
}
return 0;
}
用栈来模拟,如果两个数奇偶性相同,则可以直接消除
#include <iostream>
#include <stack>
using namespace std;
const int N = 2e5 + 10;
int a[N];
stack<int> s;
int n;
bool isValid(){
while (s.size() > 1){
int t1 = s.top();
s.pop();
int t2 = s.top();
s.pop();
if (t1 < 0 || t2 < 0){
return false;
}
if ((t1%2) == (t2%2)){
}else{
if (t1 % 2 == 0){
s.push(t2);
}else{
s.push(t2 - 1);
}
}
}
if (s.size() == 0){
return true;
}
int last = s.top();
if (last < 0 || last % 2 == 1){
return false;
}
return true;
}
int main(){
cin >> n;
for (int i = 0;i<n;++i){
scanf("%d",&a[i]);
s.push(a[i]);
}
bool k = isValid();
if (k){
puts("YES");
}else{
puts("NO");
}
return 0;
}