一. 题目
-
题目
-
示例
二. 方法一: 排序
-
解题思路
经过反转两列表相等的条件时:
两个列表长度相等, 且相同元素的个数相等
对两个列表进行排序, 排序后相等的话, 经过反转一定能得到 -
解题代码
def canBeEqual(self, target: List[int], arr: List[int]) -> bool: target.sort() arr.sort() if target == arr: return True else: return False
-
分析
时间复杂度: O(nlongn)
空间复杂度: O(1)
三. 方法二: hash
-
解题思路
- 用字典存储两个列表中各元素的个数
- 然后比较两个列表是否相等, 相等的话则可以反转得到; 否则不可以
-
解题代码
def canBeEqual(self, target: List[int], arr: List[int]) -> bool: map1 = {} map2 = {} for ele in target: if ele not in map1: map1[ele] = 1 else: map1[ele] += 1 for ele in arr: if ele not in map2: map2[ele] = 1 else: map2[ele] += 1 return map1 == map2
-
分析
时间复杂度: O(n)
空间复杂度: O(n)