wisdompeak / LeetCode

This repository contains the solutions and explanations to the algorithm problems on LeetCode. Only medium or above are included. All are written in C++/Python and implemented by myself. The problems attempted multiple times are labelled with hyperlinks.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于2311的update max

mingyEx opened this issue · comments

commented

具体地说,这一行的max是否是必要的呢?
ret初始化的时候离可能的最大值已经仅仅差1,下面的for(int i = m - 1... 循环从最后面开始数的话在遇到第一个check() == true之前,计算出的长度也一直都是小于等于ret初始值的,这里为什么要用max来update它,其实直接赋值就行了吧(尝试去掉max之后依旧可以通过)
https://youtu.be/d20Aw0tB6jw?t=1410 这里也说了(int)s.size() - i >= (int)t.size() - j; 是为了保证位数相等,既然如此max就更没必要了。
对照着文字看懂了大部分代码,看到max彻底懵住,看了一遍视频也没提到。
是我的理解有问题吗,还是testcase太弱?

这只是无关紧要的随手一写而已,你想得太多了。
很显然countZeros(s, m-n+1) + n-1永远会大于n-1的,所以这个max确实不需要。
我写代码的时候想的是,哦,肯定有一个解是n-1。其次我又想到,取s的最后n-1个字符,然后之前取尽量多的leading zeros,肯定也是一个解。
此时我手上就有两个解了,无脑取一下max就行了,留着精力继续想下面。

commented

感谢回复