Hướng dẫn jump game leetcode python solution - nhảy trò chơi leetcode giải pháp python

Hôm nay, chúng ta có một thử thách lập trình Python khác được lấy từ LeetCode - vấn đề trò chơi nhảy LeetCode.

Chúng tôi sẽ thảo luận về một cách tiếp cận được đề xuất cho vấn đề LeetCode này, sau đó là một giải pháp Python được giải thích đầy đủ.

Ready?

Mục lục

  • Vấn đề trò chơi nhảy leetcode
    • ví dụ 1
    • Ví dụ 2
  • Cách tiếp cận được đề xuất cho vấn đề trò chơi nhảy LeetCode
    • ví dụ 1
    • Ví dụ 2
  • Cách tiếp cận được đề xuất cho vấn đề trò chơi nhảy LeetCode
    • Giải pháp trò chơi nhảy LeetCode được đề xuất trong Python
    • Lặp lại hàm bằng cách sử dụng hàm ral ()
    • Bên trong vòng lặp

Vấn đề trò chơi nhảy leetcode

ví dụ 1

Ví dụ 2

ví dụ 1

Ví dụ 2

Cách tiếp cận được đề xuất cho vấn đề trò chơi nhảy LeetCode

Giải pháp trò chơi nhảy LeetCode được đề xuất trong Python

Lặp lại hàm bằng cách sử dụng hàm ral ()

Bên trong vòng lặp

Ví dụ 2

Cách tiếp cận được đề xuất cho vấn đề trò chơi nhảy LeetCode

Giải pháp trò chơi nhảy LeetCode được đề xuất trong Python

Cách tiếp cận được đề xuất cho vấn đề trò chơi nhảy LeetCode

Giải pháp trò chơi nhảy LeetCode được đề xuất trong Python

Lặp lại hàm bằng cách sử dụng hàm ral ()

Bên trong vòng lặp

ví dụ 1

Ví dụ 2

Cách tiếp cận được đề xuất cho vấn đề trò chơi nhảy LeetCode

Giải pháp trò chơi nhảy LeetCode được đề xuất trong Python

Lặp lại hàm bằng cách sử dụng hàm ral ()

Bên trong vòng lặp

Sau khi vòng lặp

Hãy bắt đầu với vấn đề đầu tiên. Vấn đề này đòi hỏi chúng ta phải viết một hàm chấp nhận danh sách các số nguyên không âm. Mỗi phần tử trong danh sách thể hiện độ dài nhảy tối đa của bạn ở vị trí đó.

Ví dụ 2

Cách tiếp cận được đề xuất cho vấn đề trò chơi nhảy LeetCode

Giải pháp trò chơi nhảy LeetCode được đề xuất trong Python

Lặp lại hàm bằng cách sử dụng hàm ral ()

Bên trong vòng lặp

Sau khi vòng lặp

Cách tiếp cận được đề xuất cho vấn đề trò chơi nhảy LeetCode

Giải pháp trò chơi nhảy LeetCode được đề xuất trong Python

def canJump(nums):
    if len(nums) == 1:
            return True

    minStepsRequired = 0
    previousGood = len(nums)-1
    
    # work backwards and see if can reach final cell
    for i in range(len(nums)-2, -1, -1):
        minStepsRequired = previousGood - i
        if nums[i] >= minStepsRequired:
            previousGood = i

    return previousGood == 0

Lặp lại hàm bằng cách sử dụng hàm ral ()

Bên trong vòng lặp

Sau khi vòng lặp

Hãy bắt đầu với vấn đề đầu tiên. Vấn đề này đòi hỏi chúng ta phải viết một hàm chấp nhận danh sách các số nguyên không âm. Mỗi phần tử trong danh sách thể hiện độ dài nhảy tối đa của bạn ở vị trí đó.

False1, mặt khác, lưu trữ chỉ số của vị trí đó.

Chúng tôi khởi tạo False1 đến chỉ số của phần tử cuối cùng trong True7 vì chúng tôi sẽ lặp lại True7 ngược và vị trí cuối cùng luôn được coi là một vị trí tốt.

Lặp lại hàm bằng cách sử dụng hàm ral ()

Từ các dòng 9 đến 12, chúng tôi có vòng lặp False7 sử dụng hàm False8 để lặp qua True7.

Hãy nhớ lại rằng hàm [1, 1, 0, 3]0 trả về một chuỗi các số bắt đầu từ [1, 1, 0, 3]1 và kết thúc một số trước [1, 1, 0, 3]2.

[1, 1, 0, 3]3 Chỉ định sự gia tăng để sử dụng.

Trong giải pháp được đề xuất của chúng tôi, [1, 1, 0, 3]1 bằng [1, 1, 0, 3]5, [1, 1, 0, 3]2 bằng -1 và [1, 1, 0, 3]3 bằng -1.

Điều này có nghĩa là chúng tôi muốn hàm False8 bắt đầu từ [1, 1, 0, 3]5 và tiếp tục giảm 1 cho đến khi chúng tôi đạt được một số trước [1, 1, 0, 3]2 (tức là một số trước -1, là 0).

Điều này dẫn đến vòng lặp False7 lặp lại từ phần tử cuối cùng thứ hai trong danh sách đến phần tử thứ nhất.

Bên trong vòng lặp

Bên trong vòng False7, chúng tôi tính toán số bước tối thiểu cần thiết để đạt được vị trí tốt gần đây nhất (trên dòng 10).

Giả sử False3.

Lần đầu tiên vòng lặp False7 chạy, chúng tôi sẽ ở phần tử cuối cùng thứ hai trong True7 (tức là tại INDEX 3).

False1 lưu trữ chỉ số của phần tử cuối cùng trong True7, là 4.

False0 sau đó sẽ là False9 (trong đó [1, 2, 0, 3]0 lưu trữ chỉ số hiện tại) = 4 - 3 = 1.

Điều này có nghĩa là tại INDEX 3, chúng ta chỉ cần nhảy một bước để đạt được vị trí gần đây nhất được coi là tốt.

Trên dòng 11, chúng tôi kiểm tra xem có thể nhảy một bước từ chỉ mục 3. Vì [1, 2, 0, 3]1 là 4 (lớn hơn hoặc bằng 1), có thể. Do đó, chỉ số 3 được coi là một vị trí tốt.

Do đó, chúng tôi cập nhật giá trị của False1 lên 3 (trên dòng 12).

Ở mỗi bước khi chúng tôi lặp lại đến True7, chúng tôi tiếp tục kiểm tra xem có thể đạt được vị trí được chỉ định bởi False1 từ chỉ số hiện tại không. Nếu có, chúng tôi cập nhật giá trị của False1 lên chỉ mục hiện tại.

Chẳng hạn, khi [1, 2, 0, 3]0 bằng 2 (nghĩa là tại chỉ số 2), False1 là 3.

Chúng ta cần kiểm tra xem có thể nhảy từ chỉ mục 2 sang chỉ mục 3. Nếu có thể đến INDEX 3 từ INDEX 2, chúng ta biết rằng có thể đạt được phần tử cuối cùng trong True7. Điều này là do từ INDEX 3, chúng ta có thể nhảy đến INDEX 4, đó là yếu tố cuối cùng.

Vì chúng ta chỉ cần nhảy một bước từ chỉ mục 2 sang chỉ số 3 (theo tính toán theo công thức trên dòng 10) và [1, 2, 0, 3]9 là 2, nên có thể.

Do đó, INDEX 2 được coi là một vị trí tốt và chúng tôi cập nhật giá trị của False1 lên 2.

Chúng tôi tiếp tục làm điều đó cho đến khi chúng tôi hoàn thành việc lặp lại tất cả các yếu tố trong True7.

Sau khi vòng lặp

Sau khi lặp qua tất cả các yếu tố trong True7, nếu giá trị cuối cùng của False1 là 0, chúng ta biết rằng vị trí 0 là một vị trí tốt. Điều này có nghĩa là có thể đạt được phần tử cuối cùng từ INDEX 0.

Nếu đó là trường hợp, chúng tôi sẽ trở lại True.

Chúng tôi làm điều đó bằng cách trả về kết quả của điều kiện True5 trên dòng 14. Nếu True5 trả về True, chúng tôi sẽ trả lại True. Khác, chúng tôi trở lại False.

Với điều đó, chức năng đã hoàn thành.

Jump LeetCode Solution có thể không?

Đầu vào: nums = [2,3,1,1,4] Đầu ra: Giải thích đúng: Nhảy 1 bước từ chỉ mục 0 đến 1, sau đó 3 bước đến chỉ mục cuối cùng.Ví dụ 2: Đầu vào: Nums = [3,2,1,0,4] Đầu ra: Giải thích sai: Bạn sẽ luôn đến INDEX 3 bất kể điều gì.Độ dài nhảy tối đa của nó là 0, điều này khiến nó không thể đạt đến chỉ số cuối cùng.Jump 1 step from index 0 to 1, then 3 steps to the last index. Example 2: Input: nums = [3,2,1,0,4] Output: false Explanation: You will always arrive at index 3 no matter what. Its maximum jump length is 0, which makes it impossible to reach the last index.

Vấn đề trò chơi nhảy là gì?

Trò chơi nhảy.Bạn được cung cấp một num mảng số nguyên.Ban đầu bạn được định vị ở chỉ mục đầu tiên của mảng và mỗi phần tử trong mảng biểu thị độ dài nhảy tối đa của bạn ở vị trí đó.Trả về true nếu bạn có thể đạt được chỉ số cuối cùng, hoặc sai nếu không.Return true if you can reach the last index, or false otherwise.