文章目錄
- 前言
- 一、11. 盛最多水的容器
- 二、41. 缺失的第一個正數
- 三、42. 接雨水
- 總結
前言
一個本碩雙非的小菜雞,備戰24年秋招,計劃二刷完卡子哥的刷題計劃,加油!
二刷決定精刷了,于是參加了卡子哥的刷題班,訓練營為期60天,我一定能堅持下去,迎來兩個月后的脫變的,加油!
推薦一手卡子哥的刷題網站,感謝卡子哥。代碼隨想錄
一、11. 盛最多水的容器
11. 盛最多水的容器
Note:雙指針
class Solution {
public:int maxArea(vector<int>& height) {int leftIndex = 0, rightIndex = height.size() - 1;int res = 0;while (leftIndex < rightIndex) {int ans = min(height[leftIndex], height[rightIndex]) * (rightIndex - leftIndex);res = max(ans, res);if (height[leftIndex] <= height[rightIndex])leftIndex++;elserightIndex--;}return res;}
};
二、41. 缺失的第一個正數
41. 缺失的第一個正數
Note:神思想,利用-1原地哈希
class Solution {
public:int firstMissingPositive(vector<int>& nums) {int size = nums.size();if (find(nums.begin(), nums.end(), 1) == nums.end())return 1;for (int i = 0; i < size; i++) {if (nums[i] <= 0 || nums[i] > size)nums[i] = 1;}for (int i = 0; i < size; i++) {int num = abs(nums[i]) - 1;nums[num] = -abs(nums[num]);}for (int i = 0; i < size; i++) {if (nums[i] > 0)return i + 1;}return size + 1;}
};
三、42. 接雨水
42. 接雨水
Note:雙指針
class Solution {
public:int trap(vector<int>& height) {int ans = 0;int left = 0, right = height.size() - 1;int leftMax = 0, rightMax = 0;while (left < right) {leftMax = max(leftMax, height[left]);rightMax = max(rightMax, height[right]);if (height[left] < height[right]) {ans += leftMax - height[left];++left;} else {ans += rightMax - height[right];--right;}}return ans;}
};
總結
hot前100的三道題