#include <iostream>
#include <string>
#include <unordered_set>
#include <algorithm>
using namespace std;
// 题目函数
int lengthOfLongestSubstring(string s) {
unordered_set<char> st;
int left = 0, res = 0;
for (int right = 0; right < s.size(); right++) {
while (st.count(s[right])) {
st.erase(s[left]);
left++;
}
st.insert(s[right]);
res = max(res, right - left + 1);
}
return res;
}
// main 函数,负责输入输出
int main() {
string s;
cout << "请输入字符串:";
cin >> s; // 输入
int ans = lengthOfLongestSubstring(s); // 调用
cout << "最长无重复子串长度:" << ans << endl; // 输出
return 0;
}
11. 盛最多水的容器
int maxArea(vector<int>& height) {
int left = 0, right = height.size() - 1;
int res = 0;
while (left < right) {
int h = min(height[left], height[right]);
res = max(res, h * (right - left));
if (height[left] < height[right]) left++;
else right--;
}
return res;
}
int main() {
int n;
cout << "元素个数:";
cin >> n;
vector<int> height(n);
for (int i = 0; i < n; i++) cin >> height[i];
cout << maxArea(height) << endl;
return 0;
}
53. 最大子数组和
int maxSubArray(vector<int>& nums) {
int cur = nums[0], res = nums[0];
for (int i = 1; i < nums.size(); i++) {
cur = max(nums[i], cur + nums[i]);
res = max(res, cur);
}
return res;
}
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) cin >> nums[i];
cout << maxSubArray(nums) << endl;
return 0;
}
55. 跳跃游戏
bool canJump(vector<int>& nums) {
int max_reach = 0;
for (int i = 0; i < nums.size(); i++) {
if (i > max_reach) return false;
max_reach = max(max_reach, i + nums[i]);
}
return true;
}
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) cin >> nums[i];
cout << (canJump(nums) ? "true" : "false") << endl;
return 0;
}