941. 有效的山脉数组
自己写的
class Solution {
public:
bool validMountainArray(vector<int>& arr) {
int l = 0, r = 1;
bool up = true, change = false;
if (arr.size() < 3)
return false;
if (arr[r] < arr[l])
up = false;
while (r < arr.size())
{
if (up)
{
if (arr[r] < arr[l])
{
up = false;
change = true;
}
else if (arr[r] == arr[l])
return false;
}
else
{
if (arr[l] <= arr[r])
return false;
}
++l, ++r;
}
if (change)
return true;
return false;
}
};
自己写的过程中也是没考虑全面,刚开始错误提交了好几次,没考虑到单调递增或单调递减的情况下能不能得出正确答案,然后还有一点是针对up
这个变量的处理,我一开始直接让它为true
了,这就表示我默认给定的数组是满足刚开始上升的,这就会若给出的数组是单调递减的情况下不通过,所以刚开始一定要通过这段代码
if (arr[r] < arr[l])
up = false;
来判断一开始的数组是上升还是下降。
写完了后看了下卡哥的讲解,比我写的好太多了。
卡哥思路:
卡哥代码:
class Solution {
public:
bool validMountainArray(vector<int>& A) {
if (A.size() < 3) return false;
int left = 0;
int right = A.size() - 1;
// 注意防止越界
while (left < A.size() - 1 && A[left] < A[left + 1]) left++;
// 注意防止越界
while (right > 0 && A[right] < A[right - 1]) right--;
// 如果left或者right都在起始位置,说明不是山峰
if (left == right && left != 0 && right != A.size() - 1) return true;
return false;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!