常见面试算法题-打麻将

2024-04-24 07:20
文章标签 算法 面试 常见 打麻将

本文主要是介绍常见面试算法题-打麻将,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 题目描述

【打麻将】

给定一个列表,里面含所有14个元素,问这14个元素,能不能组成3+3+3+3+2的组合,3格式可以表示顺子,或者3张相同的牌,2表示对子(两张相同的牌)类似麻将胡牌一样,若能组成,返回True,不能则返回False

输入描述

输入14个数字表示列表的14个元素

输出描述

True or False

示例1   输入输出示例仅供调试,后台判题数据一般不包含示例

1 2 3 2 3 4 3 4 5 5 5 6 7 8

输出

True

因为可以组成[1,2,3][2,3,4][4,5,6][6,7,8][5,5]的3+3+3+3+2的组合

示例2   输入输出示例仅供调试,后台判题数据一般不包含示例

1 2 3 4 5 6 7 8 9 10 11 12 13 14

输出

False

不能组成3+3+3+3+2的组合

以下代码为本人原创,可以供大家参考,若有不足之处,感谢指出!!!!

import collections
import copy
nums = list(map(int, input().split()))
count = collections.Counter(nums)
tag = Falsefor num in count.keys():if count[num] >= 2:count_copy = copy.deepcopy(count)count_copy[num] -= 2dp = {(0, 0): 0}for num in sorted(count_copy):dp_copy = collections.defaultdict(int)x, y, z = count_copy[num], count_copy[num+1], count_copy[num+2]for (i,j), c in dp.items():for k in range(3):if i+k <= x and j+k <= y and k<= z:dp_copy[k+j, k] = max(dp_copy[j+k, k], c+(x-i-k)//3 + k)dp = dp_copyif max(dp.values()) == 4:tag = Truebreak
print(tag)

这篇关于常见面试算法题-打麻将的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/931103

相关文章

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

MySQL ORDER BY 语句常见用法、示例详解

《MySQLORDERBY语句常见用法、示例详解》ORDERBY是结构化查询语言(SQL)中的关键字,隶属于SELECT语句的子句结构,用于对查询结果集按指定列进行排序,本文给大家介绍MySQL... 目录mysql ORDER BY 语句详细说明1.基本语法2.排序方向详解3.多列排序4.常见用法示例5.

MySQL 索引简介及常见的索引类型有哪些

《MySQL索引简介及常见的索引类型有哪些》MySQL索引是加速数据检索的特殊结构,用于存储列值与位置信息,常见的索引类型包括:主键索引、唯一索引、普通索引、复合索引、全文索引和空间索引等,本文介绍... 目录什么是 mysql 的索引?常见的索引类型有哪些?总结性回答详细解释1. MySQL 索引的概念2

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作