42. 接雨水C
1.经典算法-梯形输出2.经典问题-打印日期万金油版本3.经典算法问题之打印日期4.经典算法之天数问题5.经典算法之图形问题6.经典算法之英文日期问题7.经典算法之-英文日期C++版8.经典算法之剩下的树C9.经典算法题-剩下的树C++10.经典算法题之手机键盘11.经典算法题之手机键盘C12.经典算法题之排序C++13.经典算法题之排序C14.经典算法题之整奇偶排序C++15.经典算法之-整数奇偶排序C16.经典算法题之-成绩排序C++17.经典算法题之成绩排序C18.KY2 成绩排序C++19.KY2 成绩排序C20.KY158 找xC++21.KY158 找xC22.KY199 查找C++23.KY199 查找C24.KY20 完数与盈数C++25.KY20 完数VS盈数C26.3254:约瑟夫问题No.2C++27.3254:约瑟夫问题No.2C28.猫狗收容所 C++29.KY109 Zero-complexity TranspositionC++30.KY109 Zero-complexity Transposition C31.20. 有效的括号C++32.20. 有效的括号C33.1978:扩号匹配问题34.1978:扩号匹配问题C35.KY129 简单计算器C++36.KY17 n的阶乘C++37.4147:汉诺塔问题(Tower of Hanoi)C++38.KY96 FibonacciC++39.KY85 二叉树C++40.KY212 二叉树遍历C++41.KY11 二叉树遍历C++42.KY207 二叉排序树C++43.KY124 二叉搜索树C++44.KY196 复数集合C++45.KY196 复数集合C46.KY188 哈夫曼树C++47.KY27 查找学生信息C++48.KY27 查找学生信息C49.KY146 魔咒词典C++50.KY146 魔咒词典C51.Catch That CowC++52.Find The MultipleC++53.A Knight's JourneyC++54.KY175 连通图C55.KY148 还是畅通工程C++56.畅通工程续C57.KY225 N阶楼梯上楼问题C++58.KY22 最大序列和C59.KY78 最大上升子序列和C++60.DP19 最长公共子序列(一)C61.1. 两数之和C62.49. 字母异位词分组c++63.128. 最长连续序列C64.4.3 提升题 - A One Way In, Two Ways OutC++65.283. 移动零C66.11. 盛最多水的容器C++67.15. 三数之和C++
68.42. 接雨水C
69.3. 无重复字符的最长子串C++70.438. 找到字符串中所有字母异位词C71.704. 二分查找C72.27. 移除元素C73.35. 搜索插入位置C74.34. 在排序数组中查找元素的第一个和最后一个位置C75.69. x 的平方根 C76.367. 有效的完全平方数C77.26. 删除有序数组中的重复项C78.844. 比较含退格的字符串C79.977. 有序数组的平方80.209. 长度最小的子数组C81.904. 水果成篮C82.76. 最小覆盖子串C83.59. 螺旋矩阵 IIC84.203. 移除链表元素C85.206. 反转链表C86.24. 两两交换链表中的节点C87.19. 删除链表的倒数第 N 个结点C88.面试题 02.07. 链表相交C89.142. 环形链表 II C90.242. 有效的字母异位词 C91.383. 赎金信C92.349. 两个数组的交集C93.350. 两个数组的交集 II C94.202. 快乐数 C95.454. 四数相加 II C96.344. 反转字符串C97.541. 反转字符串 II C98.54. 替换数字 C99.151. 反转字符串中的单词 c因为还是双指针的题目。
我想到的短板效应,看两头,能接住的水也就是取决于最短的一方。
每次看两头后,在里面找比最短还短的地方,那个就是有水的地方。找到水后在把它填平,防止重复找到。然后两头往中间靠就行了。
int min(int i,int j){ if(i>j) return j; return i; } int findsum(int* height,int head,int tail,int t){ if(t==0) return 0; int sum=0; for(;head<=tail;head++){ if(height[head]<t){ sum+=t-height[head]; height[head]=t; } } return sum; } int trap(int* height, int heightSize) { int head=0,tail=heightSize-1; while(height[head]==0 && head<tail) head++; while(height[tail]==0 && tail>head) tail--; int sum=0; while(head <tail){ int t=min(height[head],height[tail]); sum+=findsum(height,head+1,tail-1,t); if(height[head]==height[tail]){ head++; tail--; while(head<tail && height[head]<=height[head-1]) head++; while(head<tail && height[tail]<=height[tail+1]) tail--; }else if(height[head] <height[tail]){ head++; while(head<tail && height[head]<=height[head-1]) head++; }else{ tail--; while(head<tail && height[tail]<=height[tail+1]) tail--; } } return sum; }
结果:懒得优化了。等考上研究生了。在提高要求把。目前还是把题目能解出来的阶段。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!