【Leetcode Daily】2875无限数组的最短子数组
题目浅析
想查看原题可以点击题目链接。
简单地说,就是给一个数组,可以将该数组无限地复制自身,求无限的数组中,子数组和恰好为 target 的最短长度。
思路分享
本问题看似没那么难,实则藏了一个难点,由于数组可以无限叠加,那么所求的子数组很可能横跨了很多数组,只有解决了这个问题,才能回归普通的不定长滑动窗口(【Leetcode Daily】3090每个字符最多出现两次的最长字符串)。
问题可以这么解决,对目标和 target 取余记为 mod,然后加倍数组,在其中找到和为 mod 的窗口长度,最后加上中间省略的数组长度(target/all_sum*nums.size())。
代码解答(强烈建议自行解答后再看)
- 参考解法
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!