热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Leetcode1640.能否连接形成数组(simple)

目录1.题目描述2.解题分析3.代码实现1.题目描述给你一个整数数组arr,数组中的每个整数互不相同。另有一个由整数数组构成的数组pieces,

目录

1. 题目描述

2. 解题分析

3. 代码实现



1. 题目描述

给你一个整数数组 arr ,数组中的每个整数 互不相同 。另有一个由整数数组构成的数组 pieces,其中的整数也 互不相同 。请你以 任意顺序 连接 pieces 中的数组以形成 arr 。但是,不允许 对每个数组 pieces[i] 中的整数重新排序。

如果可以连接 pieces 中的数组形成 arr ,返回 true ;否则,返回 false 。

示例 1:

输入:arr = [15,88], pieces = [[88],[15]]
输出:true
解释:依次连接 [15][88]
示例 2:

输入:arr = [49,18,16], pieces = [[16,18,49]]
输出:false
解释:即便数字相符,也不能重新排列 pieces[0]

示例 3:

输入:arr = [91,4,64,78], pieces = [[78],[4,64],[91]]
输出:true
解释:依次连接 [91][4,64][78]

提示:

  • 1 <&#61; pieces.length <&#61; arr.length <&#61; 100
  • sum(pieces[i].length) &#61;&#61; arr.length
  • 1 <&#61; pieces[i].length <&#61; arr.length
  • 1 <&#61; arr[i], pieces[i][j] <&#61; 100
  • arr 中的整数 互不相同
  • pieces 中的整数 互不相同&#xff08;也就是说&#xff0c;如果将 pieces 扁平化成一维数组&#xff0c;数组中的所有整数互不相同&#xff09;

来源&#xff1a;力扣&#xff08;LeetCode&#xff09;
链接&#xff1a;https://leetcode-cn.com/problems/check-array-formation-through-concatenation
著作权归领扣网络所有。商业转载请联系官方授权&#xff0c;非商业转载请注明出处。

2. 解题分析

        pieces的每个元素都是数组&#xff0c;允许对pieces中的各元素进行重排&#xff0c;但是不能对各元素&#xff08;数组&#xff09;内部的元素进行次序重排。

        重排能够成立的前提条件是&#xff0c;将pieces完全展平后后所包含的元素集合与arr中的元素集合完全相同。

        所以&#xff0c;判断是否能够重排pieces能够形成arr只需要判断pieces中每个其中数组元素是否恰好包含arr中某一个slice&#xff08;即按照相同顺序连续排在一起&#xff09;。

        

3. 代码实现

from typing import Listclass Solution:def canFormArray(self, arr: List[int], pieces: List[List[int]]) -> bool:for p in pieces:# print(p)k &#61; 0while k&#61;len(arr) or arr[k&#43;j] !&#61; p[j]:return False# The same segment is found for p.breakelse:k &#43;&#61; 1# Didn&#39;t found p[0] in arr.if k &#61;&#61; len(arr):return Falsereturn Trueif __name__ &#61;&#61; &#39;__main__&#39;:sln &#61; Solution()arr &#61; [15]pieces &#61; [[15]]print(sln.canFormArray(arr,pieces))arr &#61; [15]pieces &#61; [[25]]print(sln.canFormArray(arr,pieces)) arr &#61; [15,88]pieces &#61; [[88],[15]]print(sln.canFormArray(arr,pieces))arr &#61; [49,18,16]pieces &#61; [[16,18,49]]print(sln.canFormArray(arr,pieces))arr &#61; [91,4,64,78]pieces &#61; [[78],[4,64],[91]] print(sln.canFormArray(arr,pieces))

        注意&#xff0c;因为题设条件已经限定了pieces的各数组元素总长等于arr的长度&#xff0c;因此不需要考虑pieces所包含的所有数的集合构成了arr中元素集合的真子集的情况&#xff0c;也就免掉了额外的validity检查。

回到主目录&#xff1a;笨牛慢耕的Leetcode解题笔记(动态更新。。。)


推荐阅读
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 本文为Codeforces 1294A题目的解析,主要讨论了Collecting Coins整除+不整除问题。文章详细介绍了题目的背景和要求,并给出了解题思路和代码实现。同时提供了在线测评地址和相关参考链接。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
author-avatar
可卡因
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有