题目要求给定一个3位的整数abc,其中每个数字都不是0。计算abc + bca + cab的结果。
O(logN)
#include<bits/stdc++.h>
using namespace std;
int main() {
char a, b, c;
cin >> a >> b >> c;
// 将字符连接成字符串
string abc = string({a, b, c});
string bca = string({b, c, a});
string cab = string({c, a, b});
// 将字符串转换为整数
int abc_int = stoi(abc);
int bca_int = stoi(bca);
int cab_int = stoi(cab);
int ans = abc_int + bca_int + cab_int;
cout << ans << endl;
return 0;
}
题目给出了N个平台的高度,Takahashi初始站在最左边的平台上。他会尽可能地向右移动,只要右侧的平台高度比当前平台高。要求找到他最终站在的平台的高度。
遍历平台,如果当前平台高度大于等于下一个平台高度,则输出当前平台高度并结束程序。如果整个序列都满足升序条件,则输出最后一个平台的高度。
O(N)
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> h(n);
for (int i = 0; i < n; i++)
cin >> h[i];
for (int i = 0; i < n - 1; i++) {
if (h[i] >= h[i + 1]) {
cout << h[i] << endl;
return 0;
}
}
cout << h[n - 1] << endl;
return 0;
}
给定一个长度为N的整数序列A,以及Q个查询。每个查询包含一对整数(x, k),表示在序列A中找到第k次出现的x,并输出其索引。如果不存在第k次出现的x,则输出-1。
可以使用map来记录每个元素的出现次数和对应的索引,以便快速回答查询。通过将每个元素的出现次数和索引存储在map中,可以在O(1)时间内找到第k次出现的x。
O(N+Q)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, q;
cin >> n >> q;
map<int, map<int, int>> m;
vector<int> a(n);
for(int i=0; i<n; i++)
{
cin >> a[i];
int t = m[a[i]].size() + 1;
m[a[i]][t] = i + 1;
}
while(q--)
{
int x, k;
cin >> x >> k;
if(m.find(x) != m.end() && k <= m[x].size())
cout << m[x][k] << endl;
else
cout << -1 << endl;
}
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务