leecode中的面试100题
isalnum
函数用于检查一个字符是否为字母或数字。它的参数是一个int
类型
isupper() 是大写
islower() 是小写
toupper() 变成大写
tolower() 变成小写
do while 首先不管怎么 先执行do一次 然后执行完了之后 在判断while如果符合while里面就继续执行do
vector容器中insert怎么使用
// 在开始位置之前插入单个元素 5 it.insert(it.ebgin(), 5);
//插入五个六 it.insert(it.begin(),5,6);
//在第一个元素之前插入nums中的所有元素 it.isert(it.begin(),nums.begin(),nums.end());
(一)数组 / 字符串
1 合并两个有序数组
在 C++ 中,vector<int> nums3(10);
创建了一个名为nums3
的vector
容器,用于存储整数类型数据。括号中的10
表示容器的初始大小,如何在往里加入 那就是在10这个大小之后加入!
2 移除元素
方法要学会 2023.9.15那个方法很好
3 删除有序数组中的重复项
4 删除有序数组中的重复项(II)
我首先想的是 利用一个 左 中 右 来实现 就是遍历我们这个数组如果左等于中 中等于右 那我直接删除右 如果不一样 直接 左等于右 中等于右加1 右等于右+2 这个是错的想法 比如 1 2 2 2 你自己看看你这样子对吗 肯定不对
新想法 给一个left = 0 sum = 1 从1开始遍历我们的数组 如果数组中nums[i] ==nums[i-1]直接sum++,之后判断sum if sum<=2 直接把我们left++ 然后nums[left] = nums[i] if >2 那我们直接不用管 。如果数组中nums[i] !=nums[i-1] sum重新变成 1 left++ nums[left] = nums[i] 最后返回 left+1即可 因为left是下标 我们返回的是大小 所以我们+1
5 多数元素
6 轮转数组
问题很简单就是需要把后面多少个元素放到前面来呢?
//剩下的也插入进去
num.insert(num.begin()+k, nums.begin(), nums.end() - k); 注意这里是+k而不是 k+1(因为我们begin代表的是第一个元素)
7 买卖股票的最佳时机
7 买卖股票的最佳时机II
8跳跃游戏 不用做了 看看得了
这个题目就是从后往前来看的 注意审题 是到达最后一个下标位置,因此最后一个不再考虑范围之内 我们要从倒数第二个开始考虑(倒数第二个下表是.size()-2 不是-1)
(二)双指针
1 验证回文串
2 判断子序列
3 两数之和||
这里最重要的就是二分查找 如果单纯两个for循环会超时
我们进行二分查找就是左闭右闭或者左闭右开 基本不写左开右闭。
想想二分查找怎么用
4 乘最多水的容量
这个题目比较好玩,用双指针来做,就是我们一开始固定left = 0,right = num.size()-1
我们容量取决于 左右中最短的那个,还取决于 右-左 的长度
考虑一个问题 如果 right 是短的那个 如果我们移动的时候仅仅移动 left 那我们容量是肯定减少的 因为right是短的那个 我们又把距离缩短了 那肯定不会有更大的容量呀 所以我们需要移动right;
因此代码就很简单的写出来了
5 三数之和
思路就是循环遍历数组,得到一个数 取负值,在这个元素的后面找两数之和等于他的集合
注意 首先我们要对遍历数组进行去重
// 跳过重复的i值,避免重复结果
if (i > 0 && nums[i] == nums[i - 1]) {
continue;
}
left right进行去重,去重逻辑很重要!
while (left < right && nums[left] == nums[left - 1]) {left++;}while (left < right && nums[right] == nums[right + 1]) {
//有一种可能就是我们right本来就是最大的了这样子就错了!!!!!!!!!!!right--;}}
这段代码应该在 else 里面 这个里面具体原因在代码中已经写出来
还有要注意的是 我们本身是while 如果没有left<right 的话 那肯定会出错 因为 比如我们第一个while没有 如果left一直++ 那有可能会出现问题就是 越界 超过nums的范围!
(三)滑动窗口
1长度最小的子数组
采用的滑动窗口来做,for循环 sum不断加我们的nums[i]直到满足 sum>=target 如果满足就进行减
详情看2024.09.18这个是最简单的想法 我也有自己写但是稍微复杂一点