首页 > 其他分享 >leetcode-1460. 通过翻转子数组使两个数组相等

leetcode-1460. 通过翻转子数组使两个数组相等

时间:2022-08-24 21:34:17浏览次数:92  
标签:arr return target int leetcode 数组 1460

1460. 通过翻转子数组使两个数组相等

图床:blogimg/刷题记录/leetcode/1460/

刷题代码汇总:https://www.cnblogs.com/geaming/p/16428234.html

题目

image-20220824145451399

思路

首先,这是一道“简单”的题,其次这是一道“简单”题。(hhh,主要是我一开始也没想到实际上很简单,主要是思路。

在一个数组arr中,如果可以选择arr的任意非空子数组并将其翻转,则我们可以知道,经过多次这样的操作可以互换任意两个位置的数字,而其他位置的数字不变。

例如:image-20220824152952525

故,对于两个序列arr我们只需要统计出现的元素及元素的个数是否相同即可。

解法

通过hash表来进行判断。

C++:unsorted_map无序映射

这个方法的空间和时间耗费比较高,没有直接排序后进行比较快。

class Solution {
public:
    bool canBeEqual(vector<int>& target, vector<int>& arr) {
        unordered_map<int,int>count1,count2;
        //计数
        for (int num:target){
            count1[num]++;
        }
        for (int num:arr){
            count2[num]++;
        }
        //比较两个序列
        if(count1.size()!=count2.size()){
            return false;
        }
        for(auto &[key,value]:count1){
            if(!count1.count(key)||count2[key]!=value){
                return false;
            }
        }
        return true;
    }
};

Python:使用Counter类

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

排序

C++:

class Solution {
public:
    bool canBeEqual(vector<int>& target, vector<int>& arr) {
        sort(target.begin(),target.end());
        sort(arr.begin(),arr.end());
        return target==arr;
    }
};

Python:

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

补充

标签:arr,return,target,int,leetcode,数组,1460
From: https://www.cnblogs.com/geaming/p/16622353.html

相关文章

  • leetcode150:逆波兰表达式求值
    packagecom.mxnet;importjava.util.Stack;publicclassSolution150{publicstaticvoidmain(String[]args){}/***根据逆波兰表示法,......
  • wwm.LeetCodeHelper C#刷题帮助类库
    wwm.LeetCodeHelper仓库地址:https://gitee.com/wwmin/www.leetcode.helper1.说明wwm.LeetCodeHelper是一款帮助在本地用C#做LeetCode题的一个库,具有自动拉取题生成c......
  • ts数组对象根据某个属性进行分组
    asyncgroupBy(sortData:OrderItem[]){constarr=(array:OrderItem[],f:Function)=>{constgroups:{[key:string]:OrderItem[],......
  • LeetCode 21 合并两个有序链表
    /***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListN......
  • 动态规划——leetcode55、跳跃游戏
    题目描述: 解题方法:动态规划动态规划解题步骤:确定状态:最后一步:如果能跳到最后一个下标,我们考虑他的最后一步到n-1(最后一个下标),这一步是从i跳过......
  • #前端算法救赎系列#LeetCode01.两数之和
    1.两数之和给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。示例1:输入:nums=[2,7,11,1......
  • LeetCode 142. 环形链表 II
    思路:快慢指针法:当快指针与慢指针相遇时,分别从起点,相遇点开始走,相遇即为环入口/***Definitionforsingly-linkedlist.*structListNode{*intval;*......
  • PHP删除数组元素的三种常用方法
    在PHP网络编程中,你可能需要删除数组中的一些元素,在本文章中,我们将演示并描述php如何删除数组元素。文章一共列举了三种方法来实现这一功能:phpunset()函数phparray_sp......
  • PHP多维数组按照某个字段进行排序
    作为开发人员,您可能会遇到这种情况,即数据库中有一个按特定顺序获取的数据列表,但您希望在前端显示这些项目时安装期中某一个字段进行排序。比如数组:$mylist=array(arra......
  • LeetCode 24. 两两交换链表中的节点
    /***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*List......