0
点赞
收藏
分享

微信扫一扫

2024.6.6 刷题总结

mafa1993 2024-06-07 阅读 7

2024.6.6

**每日一题***

2938.区分黑球和白球,刚开始没认真审题,没发现只能交换相邻的球,所以写了一个头尾的双指针,导致了错误,但是还是有两个收获,第一个是利用while写头尾双指针的题目时,一定要加上边界判断,及时跳出循环,否则会一直超时;第二个是对于一个数字字符串赋值或者判断值时,一定要用引号,不能直接给出数字。弄清楚题意之后,可以利用贪心的思想,我们发现从左遍历字符串,每次遇到一个0,就要把它移动到左边,移动的次数为它左边1的个数,因为1肯定要越过最右边的0,所以我们只需要维护一个当前状态下遇到1的个数,再维护一个当前移动的次数,每次遇到1时,sum++,遇到0时,ans+=sum.

209.长度最小的子数组,该题最差的算法为循环暴力求解,每次更新最小值;再其次到前缀和+二分查找的方法,该方法也需要每次从起点开始遍历;最优算法为滑动窗口,从0开始,累加至>=target,此时开始判断,若start往前还是满足和的条件,则不断尝试更新当前子数组的和以及最小长度,若不满足和的条件,则数组末尾继续往前,一直延申至数组末尾。

举报

相关推荐

0 条评论