陷入了一个搜索lis索引的算法

2024-10-03 21:34:54 发布

您现在位置:Python中文网/ 问答频道 /正文

该函数搜索一个值的索引,如果再次调用它,则返回该值的下一个索引。这是我尝试过的,我得到的错误是我的列表没有被覆盖,每次调用后我都得到相同的结果。 注意:我没有在这里包括链表类 如果有人知道使用此功能的更好方法,请建议

class Node:
    def __init__(self,value):
        self.value = value
        self.next = None
        self.previous = None

class LinkedList:
    def __init__(self):
        self.head = None
        self.tail = None

class DynamicSharpSearch(LinkedList):

    def __init__(self, data):
        super().__init__()
        self.data = data
        self.count = 0

        self.lim = 0    # using in search function

        for i in self.data:
            self.InsertatEnd(i)
            self.count += 1

        self.demlst = [-1 for i in range(self.count)]   # using in Search function only
        self.seclist = self.demlst


    def Search(self,n):
        x = self.head
        #demlst = [-1 for i in range(self.count)]
        y = 0
        tst = -1 # checks value if not in our data
        ##############################

        for i in range(self.count):

            if n == x.value:
                # demlst.append(i)
                self.demlst[y] = i
                tst = 0
            x = x.next
            y += 1
        ##############################
        if tst == -1:
            return -1
        else:
            pass
        """Demlist containes "indexes" """
        for i in range(self.count): 

            if self.seclist[i] >= 0:
                #y = self.seclist[i]

                self.seclist[i] = -1
                self.lim = i
                return i

obj = DynamicSharpSearch([53,4,52,7,5,4,5,5,5,6,4,2,4,5,459]) # c = 6
print(obj.Search(5))
print(obj.Search(5))
print(obj.Search(5))

我得到的输出:

4
4
4

Tags: inselfnoneobjforsearchdataif
1条回答
网友
1楼 · 发布于 2024-10-03 21:34:54

我将使用字典来跟踪每个值最后返回的索引。 调用Search方法时,它会查看是否在:start_index = self.last_returned.get(n, 0)之前查找过该值。如果start_index是>;0,然后在开始搜索之前快进到该索引。找到要查找的内容后,请更新字典:self.last_returned[n] = returned_index + 1。为什么是“+1”?因为否则你会得到你现在得到的,同样的索引一遍又一遍地返回。您需要在返回的最后一个索引之后开始搜索(但是,您需要确保存储的值不会导致索引器错误。)

相关问题 更多 >