Python技巧篇及感悟之算法会议室

Python技巧篇及感悟

双指针:
普通双指针:两个指针往同一个方向移动
对撞双指针:两个指针面对面移动
快慢双指针:慢指针+快指针

while循环中如果用if的话,他一次或者终有一次符合条件的话,有return的话他就不会执行之后的whil了,直接结束
代码解释

# while a < num: # while循环中如果用if的话,他一次或者终有一次符合条件的话,有return的话他就不会执行之后的whil了,直接结束
        #     # 获取大数组中小数组的个数并且减去1,得到最后一个索引
        #     # if intervals[a].start <= intervals[a+1].end: # 列表里面是元组,tuple' object has no attribute 'start'
        #         # 元组没有start和end方法
        #     if intervals[a][-1] <= intervals[a+1][0]: # 这样一次的if判断会造成第一次判断对的话,他就不会管第二次了,
        #         return True # 如果判断正确的话就不会管下面的执行了,直接退出循环
        #     a +=1
        #     print('我应该不会被输出')
        #     # 下标索引与列表个数得关系,退出循环

对于二维数组或者是多重数组内部的数组值的比较
有时候从0开始不一定有从末尾开始减少的比较号
while a < num: # while循环中如果用if的话,他一次或者终有一次符合条件的话,有return的话他就不会执行之后的whil了,直接结束

        #     # 获取大数组中小数组的个数并且减去1,得到最后一个索引
        #     # if intervals[a].start <= intervals[a+1].end: # 列表里面是元组,tuple' object has no attribute 'start'
        #         # 元组没有start和end方法
        #     if intervals[a][-1] <= intervals[a+1][0]: # 这样一次的if判断会造成第一次判断对的话,他就不会管第二次了,
        #         # 而且这样的话最后一项没有考虑到,这里就要用列表的start 和 end,但这里是元组
        #          return True # 如果判断正确的话就不会管下面的执行了,直接退出循环
        #     a +=1

由大到小的剪,这样一定会取到最后一位,只要把开头控制为1就可以了


for i in range(1,len(istart)):
            if istart[i][0] < istart[i - 1][1]: # 由大到小的剪,这样一定会取到最后一位,只要把开头控制为1就可以了
posted @ 2021-07-15 10:33  索匣  阅读(84)  评论(0编辑  收藏  举报