Hướng dẫn python leetcode cheat sheet - bảng lừa đảo leetcode python

num_lst = list[range[len[nums]]]

for indx, num in enumerate[num_lst]:

Tôi không chắc mình có thiếu thứ gì đó không, nhưng tôi nghĩ là không. Tôi đã chạy mã này

Nội phân chính

  • Bài viết liên quan
  • Bắt đầu với các kiểu dáng tuyệt vời về mặt cú pháp [SASS]
  • Cách tạo phần có thể thu gọn động trong JavaScript
  • LÀm thế nÀo để bạn lÀm leetcode hai khoản tiền?
  • Leetcode Có Giải Pháp Python Không?
  • Leetcode Có Tốt Cho Python Không?

nums = [2,5,7,9]
num_lst = list[range[len[nums]]]
list[enumerate[num_lst]]

output : [[0, 0], [1, 1], [2, 2], [3, 3]]

Vậy tại sao bạn tạo danh sách và sau đó liệt kê nó? Có lẽ những gì bạn muốn làm chỉ đơn giản là: enumerate[nums] sau đó

nums = [2,5,7,9]
num_lst = list[range[len[nums]]]
list[enumerate[num_lst]]

output : [[0, 0], [1, 1], [2, 2], [3, 3]]
0 trên vòng lặp khác của bạn? Một cách đơn giản hơn sẽ chỉ sử dụng các phạm vi, như tôi sẽ hiển thị bên dưới.

Ngoài ra, với đầu vào của bạn, có khả năng một số duy nhất sẽ cao hơn mục tiêu, trong trường hợp này bạn không nên thực hiện lần lặp thứ hai.

Bạn cũng không cần

nums = [2,5,7,9]
num_lst = list[range[len[nums]]]
list[enumerate[num_lst]]

output : [[0, 0], [1, 1], [2, 2], [3, 3]]
1, vì nó sẽ đến
nums = [2,5,7,9]
num_lst = list[range[len[nums]]]
list[enumerate[num_lst]]

output : [[0, 0], [1, 1], [2, 2], [3, 3]]
2.

Tôi sẽ kết thúc với:

def twoSum[nums, target]:
    """
    :type nums: List[int]
    :type target: int
    :rtype: List[int]
    """

    for i1 in range[len[nums]]:
        if nums[i1] > target:
            continue

        for i2 in range[i1 + 1, len[nums]]:
            if nums[i1] + nums[i2] == target:
                return [i1, i2]

    return None

Không biết kích thước đầu vào dự kiến, thật khó để tập trung vào cải thiện hiệu suất. Mục tiêu chính của đánh giá của tôi là loại bỏ những gì dường như là một sự hiểu lầm trong mã của bạn và theo tôi, mã hiện rõ hơn.

Hai vấn đề tổng hợp được coi là dễ dàng và thường được hỏi trong các cuộc phỏng vấn qua điện thoại của Amazon. Chúng ta sẽ thấy làm thế nào chúng ta có thể bắt đầu với một giải pháp vũ lực và cố gắng cải thiện mã bằng cách giới thiệu nhiều cấu trúc dữ liệu hơn.

Máy tính Python đơn giản [Video 25]

Vui lòng bật JavaScript

Tuyên bố sự cố: Cho một mảng số nguyên và chỉ số trả về mục tiêu số nguyên của hai số sao cho chúng cộng vào mục tiêu

Mục đích của chúng tôi sẽ là giảm độ phức tạp về thời gian và độ phức tạp không gian.

Giải pháp đầu tiên xuất hiện trong đầu là đi qua vòng lặp hai lần, mỗi vòng lặp đi qua danh sách, so sánh tổng của hai số với mục tiêu và trả về các chỉ số nếu tổng khớp.

Độ phức tạp về thời gian của thuật toán này là & nbsp; ________ 13. Trong giải pháp này, chúng tôi không kiểm tra NULL hoặc nhiều kết quả vì câu hỏi nói rằng, Danh sách trả về một giải pháp.

class Solution:
    def twoSum[self, nums, target]:
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        length = len[nums]
        for i in range[length]:
            for j in range[i + 1, length]:
                if nums[i] + nums[j] == target:
                    return [i, j]

Trong giải pháp tiếp theo của chúng tôi, chúng tôi có thể kiểm tra xem giá trị của & nbsp; Target-num [i] có tồn tại trong phần còn lại của danh sách & nbsp hay không;

________ 10. & nbsp; Đây là một giải pháp tốt hơn một chút nhưng vẫn, độ phức tạp về thời gian không phải là ____ 11 .________ 6

Mặc dù phương thức trên nhanh hơn phương pháp đầu tiên, nhưng nó vẫn không phải là tốt nhất. & Nbsp; mặc dù có vẻ như chúng ta đang lặp lại một lần nhưng trong các vòng lặp vận hành thông qua danh sách để tìm kiếm biến diff.if [typeof ez_ad_units! = 'Không xác định '] {ez_ad_units.push [[[580,400],' ssiddique_info-leader-1 ',' ezslot_7 ', 115,' 0 ',' 0 ']] 1-0 ']; Nếu mỗi lần tra cứu là trường hợp xấu nhất, thì & nbsp; o [n] là độ phức tạp về thời gian cho việc tra cứu. Chúng tôi cũng đang sử dụng các chức năng chỉ số và các hoạt động cắt lát, rất tốn thời gian, vì vậy chúng tôi cũng sẽ bỏ qua giải pháp này? -2 ',' ezslot_9 ', 116,' 0 ',' 0 ']]}; Sử dụng bản đồ băm. Vòng lặp qua danh sách và thêm tất cả các số trong băm có số làm khóa và chỉ mục làm giá trị. Bây giờ lặp lại trong danh sách một lần nữa và kiểm tra sự tồn tại khác trong băm và trả về các chỉ số.

class Solution: def twoSum[self, nums: List[int], target: int] -> List[int]: """ :type nums: List[int] :type target: int :rtype: List[int] """ _dict ={} for i, num in enumerate[nums]: _dict[num] = i for i,
num in enumerate[nums]: num_b = target - num if num_b in _dict.keys[]: return [_dict[num_b], i]

Bây giờ độ phức tạp của vấn đề trên là

nums = [2,5,7,9]
num_lst = list[range[len[nums]]]
list[enumerate[num_lst]]

output : [[0, 0], [1, 1], [2, 2], [3, 3]]
4. Chúng ta có thể cải thiện thuật toán trên bằng cách loại bỏ một vòng lặp. Ở đây chúng tôi sẽ lặp qua danh sách một lần. Tìm số khác biệt trong băm cho mọi yếu tố trong danh sách.

Nếu số khác biệt không có trong băm, hãy thêm số và chuyển sang số tiếp theo. Hãy cùng xem cách làm điều đó trong mã.

class Solution: def twoSum[self, nums: List[int], target: int] -> List[int]: """ :type nums: List[int] :type target: int :rtype: List[int] """ _dict = {} for i, num in
enumerate[nums]: if target-num in _dict.keys[]: return [_dict[target-num], i] else: _dict[num] = i

Bài Viết Liên Quan

Chủ Đề