Leetcode -- 第1460题--简单--通过翻转子数组使两个数组相等

发布于:2023-01-05 ⋅ 阅读:(353) ⋅ 点赞:(0)

题目链接

第1460题题目:

给你两个长度相同的整数数组 t a r g e t target target a r r arr arr。每一步中,你可以选择 a r r arr arr的任意非空子数组 并将它逆向翻转。你可以执行此过程任意次。

如果你能让 a r r arr arr变得与 t a r g e t target target相同,返回 T r u e True True;否则,返回 F a l s e False False

示例1:

输入: target = [1,2,3,4], arr = [2,4,1,3]
输出: true
解释: 你可以按照如下步骤使 arr 变成 target:
1- 翻转子数组 [2,4,1] ,arr 变成 [1,4,2,3]
2- 翻转子数组 [4,2] ,arr 变成 [1,2,4,3]
3- 翻转子数组 [4,3] ,arr 变成 [1,2,3,4]
上述方法并不是唯一的,还存在多种将 arr 变成 target 的方法。

示例2:

输入: target = [3,7,9], arr = [3,7,11]
输出: false
解释: arr 没有数字 9 ,所以无论如何也无法变成 target 。

思路:

两个相邻的数之间翻转可以想到冒泡排序,所以 a r r arr arr变成 t a r g e t target target可以想象成一个特殊的排序。所以只要 a r r arr arr t a r g e t target target内元素相同即可将 a r r arr arr变成 t a r g e t target target

代码

代码1:

class Solution:
    def canBeEqual(self, target: List[int], arr: List[int]) -> bool:
        target.sort()
        arr.sort()
        return target==arr

代码2:

class Solution:
    def canBeEqual(self, target: List[int], arr: List[int]) -> bool:
        return Counter(target) == Counter(arr)

总结

  • C o u n t e r ( ) Counter() Counter() c o l l e c t i o n s collections collections里面的一个类,作用是计算出字符串或者列表种不同元素出现的个数,返回值类型为 < c l a s s ′ c o l l e c t i o n s . C o u n t e r ′ > <class 'collections.Counter'> <classcollections.Counter>,可以看作一个字典类型进行操作。
  • l i s t 1 = = l i s t 2 list1==list2 list1==list2,列表进行等值比较,顺序和内容相同才会返回 T r u e True True

网站公告

今日签到

点亮在社区的每一天
去签到