Hỏi về 1 bài tập trên CF

python

(Ngọc Nguyễn) #1

Em đang học python trên CF thì gặp bài này :
Given a sequence of integers as an array, determine whether it is possible to obtain a strictly increasing sequence by removing no more than one element from the array.
(Cho một dãy số bất kì, kiểm tra xem nếu xóa 1 số thuộc dãy số đó thì ta có thu được 1 dãy tăng dần không. Yêu cầu các số trong dãy thu được sau khi xóa phải khác nhau)

Sau đây là code của em :

def phantudau(sequence):
    for i in range(len(sequence)-1):
        if sequence[i]>sequence[i+1]:
            return i
        return -1
def almostIncreasingSequence(sequence):
    j=phantudau(sequence)
    if j != -1:
        del sequence[j]
        if phantudau(sequence) == -1:
            return True
        else:
            return False
    else:
        return True

Em đã test các key test nhưng tất cả chỉ trả về True , ai có thể giúp em với ạ


(Nguyen Hieu) #2

Luôn luôn trả về True là do bạn để return -1 ở trong vòng for luôn kìa, nên khi mà câu lệnh if không thực thi thì nó sẽ return -1 luôn.


(Nguyen Hieu) #3

Mình đưa ra 2 test case để bạn suy nghĩ thêm :smile:

list_element = [1, 1, ,1, 3] # Liệu với code của bạn nó có trả về False không?
list_element2 = [8 ,9 ,7 ,10] # Nếu xóa phần từ 7 thay vì 9 thì nó cũng trả về True đấy :smile:


(Ngọc Nguyễn) #4

thanks bạn. mình sửa được rồi:smile::smile:


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?