作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在解决一个编码面试问题,它看起来像:
给定一个字符数组 A 和一个整数数组 P,其中 P[i] 表示排列中 i 处元素的位置。例如,当 A = <a, b, c, d>
和 P = <2, 0, 1, 3>
, A 应该变成 <b, c, a, d>
我对此的解决方案如下:
for i in range(len(A)):
while perm[i] != i:
A[i], A[perm[i]] = A[perm[i]], A[i]
perm[i], perm[perm[i]] = perm[perm[i]], perm[i]
for i in range(len(A)):
while perm[i] != i:
A[perm[i]], A[i] = A[i], A[perm[i]]
perm[perm[i]], perm[i] = perm[i], perm[perm[i]]
最佳答案
顺序有点重要,你在它最终重要的地方创建了代码。在任何分配发生之前,整个右侧都已完全计算,因此在简单场景中,这无关紧要。但比较:
perm[i], perm[perm[i]] = perm[perm[i]], perm[i]
perm[perm[i]], perm[i] = perm[i], perm[perm[i]]
perm[i]
在第一个影响从
perm[i]
读取的值分配给
perm[perm[i]]
时;在第二个中,分配给
perm[perm[i]]
使用旧值
perm[i]
确定分配位置,然后分配新值
perm[i]
.
tuple
右侧的所有值都被构造(在当前解释器中没有构造实际的 tuple
,但这是逻辑上发生的)关于python - Python 的交换符号中的顺序重要吗? (a, b = b, a),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59081600/
我是一名优秀的程序员,十分优秀!