- Leetcode 3468. Find the Number of Copy Arrays
- 1. 解題思路
- 2. 代碼實現
- 題目鏈接:3468. Find the Number of Copy Arrays
1. 解題思路
這一題的話思路上就是一個范圍考察,顯然,對于指定的copy方式,只要我們確定了第一個元素,事實上我們就可以唯一地求出整個數組,因此,我們只需要考察第一個元素的可選區間即可。
我們只需要分別取第一個元素的上下界,然后根據后續每一個元素的可選區間對其進行各自的修正,即可得到最終我們可取的第一個元素的區間范圍,從而我們就能得到對應的可選的方法總數了。
2. 代碼實現
給出python代碼實現如下:
class Solution:def countArrays(self, original: List[int], bounds: List[List[int]]) -> int:n = len(original)delta = [x-original[0] for x in original]lb, rb = bounds[0][0], bounds[0][1]for d, (l, r) in zip(delta, bounds):x = lb + dy = rb + dif x > r or y < l:return 0lb += max(0, l - x)rb -= max(0, y - r)if lb > rb:return 0return rb-lb+1
提交代碼評測得到:耗時61ms,占用內存64.3MB。