想复杂了,直接一步一步走一个for循环就结束了。。
from typing import List
class Solution:
def relocateMarbles(self, nums: List[int], moveFrom: List[int], moveTo: List[int]) -> List[int]:
'''
题目说测试数据保证在进行第 i 步操作时,moveFrom[i] 处至少有一个石块。
所以每次操作结束时刻开始的位置必定没有石头,结束的位置必定有石头。
但是之后的操作又有可能将石头移动到没有石头的位置
当moveForm[i]操作后,moveTo[>i]的元素都不等于moveForm[i],moveForm[i]必定没有石头
moveTo[i]操作后,moveForm[>i]的元素都不等于moveTo[i],moveTo[i]必定有石头
可能移动到初始就没有石头的位置
题目要求返回有石头的位置
所有我们只需要找出没有石头的位置排除掉,在找出有石头的位置加入就行
'''
set_list = set(nums)
for i in range(len(moveFrom)):
set_list.remove(moveFrom[i])
set_list.add(moveTo[i])
# no_flag = False
# had_flag = False
# for j in range(i + 1, n):
# if (moveTo[j] == moveFrom[i]):
# no_flag = True
# break
# if (moveFrom[j] == moveTo[i]):
# had_flag = True
# break
# if not no_flag:
# set_list.remove(moveFrom[i])
# if not had_flag and moveTo[i] not in nums:
# set_list.add(moveTo[i])
return sorted(list(set_list))