LeetCode简单题之通过翻转子数组使两个数组相等
题目
给你两个长度相同的整数数组 target 和 arr 。
每一步中,你可以选择 arr 的任意 非空子数组 并将它翻转。你可以执行此过程任意次。
如果你能让 arr 变得与 target 相同,返回 True;否则,返回 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 = [7], arr = [7]
输出:true
解释:arr 不需要做任何翻转已经与 target 相等。
示例 3:
输入:target = [1,12], arr = [12,1]
输出:true
示例 4:
输入:target = [3,7,9], arr = [3,7,11]
输出:false
解释:arr 没有数字 9 ,所以无论如何也无法变成 target 。
示例 5:
输入:target = [1,1,1,1,1], arr = [1,1,1,1,1]
输出:true
提示:
target.length == arr.length
1 <= target.length <= 1000
1 <= target[i] <= 1000
1 <= arr[i] <= 1000
来源:力扣(LeetCode)
解题思路
考虑一个最普通的交换,或者说任意一个交换swap(i,j),当0<=i<j<arr.length时,令mid=(i+j)/2,那么swap(i,j)等效于反转i->j的字串,然后再反转i+1->j-1的字串。根据冒泡排序的原理可知,任意一个数组可以通过有限次数的交换使数组有序,所以只要target的元素和arr的元素种类数量一致那么就一定能通过有限次数的交换形成一样的数组。
class Solution:def canBeEqual(self, target: List[int], arr: List[int]) -> bool:return collections.Counter(target)==collections.Counter(arr)
class Solution:def canBeEqual(self, target: List[int], arr: List[int]) -> bool:return sorted(target)==sorted(arr)
LeetCode简单题之通过翻转子数组使两个数组相等相关推荐
- C练题笔记之:Leetcode-1460. 通过翻转子数组使两个数组相等
题目: 给你两个长度相同的整数数组 target 和 arr . 每一步中,你可以选择 arr 的任意 非空子数组 并将它翻转.你可以执行此过程任意次. 如果你能让 arr 变得与 target 相同 ...
- LeetCode简单题之检查某单词是否等于两单词之和
题目 字母的 字母值 取决于字母在字母表中的位置,从 0 开始 计数.即,'a' -> 0.'b' -> 1.'c' -> 2,以此类推. 对某个由小写字母组成的字符串 s 而言,其 ...
- LeetCode简单题之找出数组的最大公约数
题目 给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 . 两个数的 最大公约数 是能够被两个数整除的最大正整数. 示例 1: 输入:nums = [2,5,6,9,10] 输出: ...
- LeetCode 930. 和相同的二元子数组(哈希+前缀和)
文章目录 1. 题目 2. 解题 1. 题目 在由若干 0 和 1 组成的数组 A 中,有多少个和为 S 的非空子数组. 示例: 输入:A = [1,0,1,0,1], S = 2 输出:4 解释: ...
- 【LeetCode】Maximum Product Subarray 求连续子数组使其乘积最大
Add Date 2014-09-23 Maximum Product Subarray Find the contiguous subarray within an array (containin ...
- LeetCode简单题之子数组最大平均数 I
题目 给你一个由 n 个元素组成的整数数组 nums 和一个整数 k . 请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数. 任何误差小于 10-5 的答案都将被视为正确答案. 示例 ...
- Leetcode 剑指 Offer 42. 连续子数组的最大和 (每日一题 20211014)
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 ...
- LeetCode -- 剑指 Offer 42. 连续子数组的最大和
剑指 Offer 42. 连续子数组的最大和 线性 DP 题. 针对于数组nums[i] 而言,以它为结尾的子数组分两种情况:(题目限制:必须是连续数组) num[i] 自身作为独立子数组:f[i] ...
- LeetCode简单题之基于排列构建数组
题目 给你一个 从 0 开始的排列 nums(下标也从 0 开始).请你构建一个 同样长度 的数组 ans ,其中,对于每个 i(0 <= i < nums.length),都满足 ans ...
最新文章
- 如何给机房的服务器安装系统,云机房服务器系统安装
- qt release打包发布_几种解决Qt程序打包后无法连接数据库问题的方法
- uniapp H5页面打包发布
- keepalived+LVS实现高可用的Web负载均衡
- matlab simulink_简单五步实现 MATLAB/Simulink 锂电池建模
- spring bean加载过程_Spring的Bean加载容器机制
- 【WCF】WCF中的InstanceContext与ConcurrencyMode【转】
- 《Android UI基础教程》——1.4节工具
- 易筋SpringBoot 2.2 | 第三十二篇:Redis Docker入门
- WEB页面实时播放海康、大华等摄像头RTSP视频流完全方案
- otc机器人tp_OTC机器人是哪个国家的
- k 均值算法(k-means)
- 计算机越学越难不想学了,“我今年大一,学的专业是计算机,真的快崩溃了,什么都不懂”...
- 计算机导论的答案,计算机导论答案
- python实现自动关机
- java计算机毕业设计个人交友网站源码+数据库+系统+lw文档+mybatis+运行部署
- 前端开发中遇到常见问题总结
- 解决MERCURY弹出上网公告的窗口方法
- 给开酒馆的小白六句忠告(下)
- linux原生安装postgresgl
热门文章
- linux vi编辑器中的复制粘贴快捷键
- C++ 笔记(32)— 预处理、文件包含include、宏替换define、条件包含ifndef、define
- 2022-2028年中国塑料绳的制造行业市场现状调查及投资商机预测报告
- Anaconda3-5.0.1 输入ipython 出现 ImportError: cannot import name ‘create_prompt_application‘
- 第五周周记(国庆第一天)
- python 过滤出某后缀名文件
- 操作系统学习笔记 第四章:存储器管理(王道考研)
- ONNX MLIR应用示例(含源码链接)
- TensorFlow反向传播算法实现
- 深度学习与TensorFlow