- 博客(2)
- 收藏
- 关注
原创 42、接雨水(C++)
当栈为空(刚开始的时候),或者目前的柱子高度小于以栈顶元素为下标的柱子时,不会形成低洼,但是右边可能存在更高的柱子,因此将目前相对较低的柱子下标存入栈中。利用for循环,从左往右,依次获得当前位置 i 处的所有左边柱子(含当前位置的柱子)的最大值,计入left_max[i]。左右边最高的柱子中 较低的柱子高度(当然左右边最高的柱子都要比当前柱子高),再减去当前柱子高度,即每个柱子处的积水量。而当栈顶元素出栈后,栈为空时,说明左边没有更高的柱子了,无法形成左边界,则跳出循环,继续遍历数组。
2025-03-07 19:50:55
705
原创 15、三数之和(C++)
因为始终满足a+b+c=0且a<=b<=c,因此可以利用双指针中对撞指针,左指针j向右移动,右指针k从nums.size()-1向左移动,只要nums[i] + nums[j] + nums[k] > 0,就将k左移,直到发现nums[i] + nums[j] + nums[k] == 0,将结果存入ans中。可能造成(a,b,c)、(c,b,a)的情况,之后采用哈希表去重。另外还有可能存在(a,a,a),(b,b,b)的错误情况。避免可能造成(a,b,c)、(c,b,a)的情况以及错误情况。
2025-03-05 11:41:56
348
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人