我的意思是反过来抱歉,基本上,找到第一个真正的元素,然后循环向后移动直到找到最后一个有效元素,一旦通过循环反向遍历数组找到最后一个为真的元素,循环前进并推送直到发现错误。
我得到了一对bool,int。
数组总是有4个元素。真实的元素循环链接在一起ex:
TFFT
TTFT
FFTT
FTTT
TFFF
FTTF
这些都是我可以拥有的有效数组。 它们包含的数字对此并不重要(第二对值)。
我需要做的是: 只保留真实的。但我需要它们保持正确的循环顺序,以便最后一个有效的真元素出现。
所以例如: 如果我的阵列是:
T 1
F 2
F 3
T 4
新阵列必须是:
T 4
T 1
另一个例子: 如果我的阵列是:
F 1
T 2
T 3
F 4
新阵列必须是:
T 2
T 3
这只是问题的一个抽象例子。实际的代码很复杂,难以阅读。但如果我知道怎么做,我会没事的。
基本上我需要顺时针从第一个不连续元素走到最后一个连续元素。
由于
编辑: 通过循环链接在一起我的意思是如果第4个和第一个元素是真的,它们不会断开连接意味着它们不是不连续的,3,4,1被认为是连续的。
因此,如果你有TFTT,那么我需要它们的顺序为3,4,1。
答案 0 :(得分:1)
您可以将阵列视为包含三个片段:
(如果您的数组可能根本没有任何F元素,那么您可以将其作为特殊情况处理。)
你想要的是一个新的数组,其中包含段3,后面是段1,段2被删除。
以下是执行此操作的算法大纲:
答案 1 :(得分:0)
假设您存储了这样的元素
l= [(T, 1),
(F, 2),
(F, 3),
(T, 4),]
然后你需要加倍列表,比如
l= [(T, 1),
(F, 2),
(F, 3),
(T, 4),
(T, 1),
(F, 2),
(F, 3),
(T, 4),]
现在你需要做的就是找到所有T
一个特殊的角落案例是原始列表全是T