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

题目链接

第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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值