Giả sử chúng ta có một mảng 2D được gọi là nhóm và một số mảng khác. Chúng ta phải kiểm tra xem liệu chúng ta có thể chọn n mảng con rời rạc từ các số mảng sao cho mảng con thứ i bằng với các nhóm [i] (0-indexed) và nếu i> 0, mảng con thứ (i-1) sẽ xuất hiện trước đó mảng con thứ i trong nums.
Vì vậy, nếu đầu vào giống như nhóm =[[2, -2, -2], [4, -3,0]] nums =[1, -1,0,2, -2, -2,4, - 3,0], thì kết quả đầu ra sẽ là true vì nhóm mảng [0] có từ chỉ số 3 đến 5 trong số các num và nhóm [1] từ chỉ số 6 đến 8 trong số.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
i:=0
-
đối với mỗi grp trong nhóm, hãy thực hiện
-
đối với j trong phạm vi i đến kích thước của nums - 1, thực hiện
-
nếu mảng con của nums [từ chỉ số j đến j + kích thước của grp] giống với grp, thì
-
i:=j + kích thước của grp
-
đi ra từ vòng lặp
-
-
nếu không,
-
trả về Sai
-
-
-
-
trả về True
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(groups, nums): i = 0 for grp in groups: for j in range(i, len(nums)): if nums[j:j+len(grp)] == grp: i = j + len(grp) break else: return False return True groups = [[2,-2,-2],[4,-3,0]] nums = [1,-1,0,2,-2,-2,4,-3,0] print(solve(groups, nums))
Đầu vào
[[2,-2,-2],[4,-3,0]], [1,-1,0,2,-2,-2,4,-3,0]
Đầu ra
True