-2
我有这样一个数组:A = [X, 0, X, Y, Y, 0, 0, Y, Z, 0, 0, 0, Z, 0, T, 0, T, 0]
。我想写一个算法,从阵列A
中删除Y
,并通过移动Z
和T
(将Z
和T
的位置替换为0
)来替换它们的位置。所以,我会得到如何在某些特定位置将数组的子集移到左侧?
- 原始数组是
A = [X, 0, X, Y, Y, 0, 0, Y, Z, 0, 0, 0, Z, 0, T, 0, T, 0]
。 - 结果是
A = [X, 0, X, Z, Z, 0, 0, T, T, 0, 0, 0, 0, 0, 0, 0, 0, 0]
。
我试过如下:
- 找到指数
I={i: A[i] = Y}
。 - 找到索引
J={j: A[j] != 0 & j > max(I)}
。 - if
size(I)>=size(J)
then leti
loop throughI
andj
loop throughJ
。 - 设置
A[i]=A[j]
并增加i
和j
。
我的问题是与案件size(I)<size(J)
?
下面是另一个例子:
- 原始阵列是
A = [X, Y, Y, Y, Z, 0, T]
。 - 结果是
A = [X, Z, T, 0, 0, 0, 0]
。
又如:
- 原始阵列是
A = [X, Y, 0, Y, Z, T]
。 - 结果是
A = [X, Z, 0, T, 0, 0]
。
因为我将两个'Z'都移到了左边。 – Ribz
StackOverflow希望您[尝试首先解决您自己的问题](http://meta.stackoverflow.com/questions/261592),并且我们也[不回答作业问题](https://softwareengineering.meta。 stackexchange.com/questions/6166)。请更新您的问题,以显示您已经在[最小,完整和可验证的示例]中尝试过的内容(http://stackoverflow.com/help/mcve)。有关更多信息,请参阅[如何提出良好问题](http://stackoverflow.com/help/how-to-ask),并参加[网站之旅](http://stackoverflow.com/tour ):) – Barmar
我写了我所尝试过的,这不是一个家庭作业问题。也许,python部分就是你所看到的。然后我从这个问题中删除Python。 – Ribz