逻辑中的因果关系(持续更新)
总结算法前后可以处理的方法示例。
世间有好有坏,算法逻辑中有“因果”。我们可以看到数组中有第一项和最后一项。
以LQ26为例,删除有序数组中的重复项。
您可以向前移动不相等的数字,这将最多改变一个数据。如果没有重复数据,则它是最前面的(索引0)数据。
如果它们相同,就会不同;
数据往前移动处理
处理的关键是慢指针的处理,慢指针是确定同一数据的索引;当他有同样的数据时,他就停下来。
N=len(nums) #有序数组可以通过快慢双指针进行排序。
快速=慢速=1
而快速n:
#为什么不相等的数据会向前移动?
如果nums[fast]!=nums[fast-1]:
nums[慢]=nums[快]
慢=1 #前后不同,在他成功替换的慢指针上加1。
Fast=1 #快指针不停走;这将替换原始数据。下面书中的一个不应该改变原来的元素。
返回慢# (28 ms),这个问题会返回什么,数字还是列表?
数据往后移动处理
n=len(set(nums))
i=1
这是为了先找出n,然后给列表分配一个片。
如果nums[i]==nums[i-1]: #等于数据移回。
Temp=nums[i] #果然,出现了错误。
nums[I : len(nums)-1]=nums[I 1:]#列表索引超出范围
nums[-1]=温度
继续
else:
i=1
N # (5988 ms)使用len(set()),所以比较慢,但是数组中的数据没有变化,或者输出非重复数据。
努力工作,不要害怕,不要计划,不要迷茫。但是你必须继续上路。虽然可能停滞不前,但你必须坚持下去。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/154996.html