. - 力扣(LeetCode)

想复杂了,直接一步一步走一个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))