题目描述

你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24。

示例 1:

输入: [4, 1, 8, 7]
输出: True
解释: (8-4) * (7-1) = 24

示例 2:

输入: [1, 2, 1, 2]
输出: False

注意:

除法运算符 / 表示实数除法,而不是整数除法。例如 4 / (1 - 2/3) = 12 。
    每个运算符对两个数进行运算。特别是我们不能用 - 作为一元运算符。例如,[1, 1, 1, 1] 作为输入时,表达式 -1 - 1 - 1 - 1 是不允许的。
    你不能将数字连接在一起。例如,输入为 [1, 2, 1, 2] 时,不能写成 12 + 12 。

解题思路

刚看到本题,觉得无从下手,看了别人的题解后,本题好解得益于数据量不算大。方法为首先从4个里面选2个数,因为操作符涉及到左右,所以是排列不是组合,有12中方式,然后从4个运算符里选一个进行操作,因此还剩下3个数,再选2个数,有6种方式,再从4个操作符里用一个,操作后还剩2个数,由于设计排列,所以有2种方式,再操作4个运算符种的一个,因此共有12x6x2x4x4x4,在10000之内,因此时间复杂度不会很大。

这里首先选取2个数,剩余的数存进列表,然后从4个运算符选一个,这里由于加和乘不用考虑顺序问题,因此有一个判断,当进行除法时,判断除数是否为0,不为0时才可以进行除法,然后进行递归,想法还是挺简单的。

class Solution(object):def judgePoint24(self, nums):if not nums:return Falseif len(nums) == 1:return abs(nums[0] - 24) < 1e-6for i in range(len(nums)):for j in range(len(nums)):if i != j:B = [nums[k] for k in range(len(nums)) if i != k != j]for k in range(4):if k < 2 and j > i:continueif k == 0:B.append(nums[i] + nums[j])if k == 1:B.append(nums[i] * nums[j])if k == 2:B.append(nums[i] - nums[j])if k == 3:if nums[j] != 0:B.append(nums[i] / nums[j])else:continueif self.judgePoint24(B):return TrueB.pop()return FalseS = Solution()
print(S.judgePoint24([8, 1, 6, 6]))

力扣—679—24点游戏相关推荐

  1. 力扣679.24点游戏

    24点游戏 描述: 你有 4 张写有 1 到 9 数字的牌.你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24. 分析: 题目意思就是求24点,但是直接说很抽象,这里举[4, 1, 8, ...

  2. 679. 24 点游戏

    链接:679. 24 点游戏 题解: https://leetcode-cn.com/problems/24-game/solution/ying-gai-shi-man-hao-li-jie-de- ...

  3. ACM. HJ67 24点游戏算法 679. 24 点游戏

    HJ67 24点游戏算法 ●● 679. 24点游戏 ●●● 描述 给定一个长度为4的整数数组 cards .你有 4 张卡片,每张卡片上都包含一个范围在 [1,9] 的数字.您应该使用运算符 ['+ ...

  4. Leetcode 679. 24 点游戏 (暴力)

    题目链接:679. 24 点游戏 这个题一开始,估摸估摸着数据量,感觉应该能用暴力暴力出来,只可惜自己写的暴力有问题,自己一开始的思想是,将4个数分为两两一组组,每组做加减乘除运算-很天真对吧现在看起 ...

  5. LeetCode 679. 24 点游戏(回溯)

    文章目录 1. 题目 2. 解题 1. 题目 你有 4 张写有 1 到 9 数字的牌.你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24. 示例 1: 输入: [4, 1, 8, 7] 输 ...

  6. [力扣题解] 174. 地下城游戏 DP

    一.题目详情 原题链接:174. 地下城游戏 一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿 ...

  7. 文巾解题 679. 24 点游戏

    1 题目描述 2 解题思路 2.1 遍历所有可能情况 我们先找出四张牌所有可能的排列组合. 然后对于每一种排列组合,我们先提出排列组合中最前面的两个数.然后对这两个数进行加\减\乘\除操作.将结果放入 ...

  8. 力扣题:生命游戏解题(未考虑内存消耗)

    题目: 根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机. 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞.每个细胞 ...

  9. 2022.1.28 力扣-每日一题-游戏中弱角色的数量

    题目描述: 你正在参加一个多角色游戏,每个角色都有两个主要属性:攻击 和 防御 .给你一个二维整数数组 properties ,其中 properties[i] = [attacki, defense ...

最新文章

  1. html false插件,解析webpack插件html-webpack-plugin
  2. MUI:字符串和json数据的相互转换
  3. Postgres 9.5的特性及未来发展方向
  4. Python的位置参数、默认参数、关键字参数、可变参数之间的区别
  5. 网络day02-设备配置远程登录
  6. Oracle登陆SQL Plus,Oracle基础学习登陆SQLPLUS(一)
  7. 刷脸AI供应商下调业绩预期,苹果股价应声跌掉一个小米
  8. docker from指令的含义_Docker 镜像常用命令
  9. 一条命令关掉centos所有不必要的服务和端口号
  10. Android SDK 和 JDK 安装
  11. Chrome浏览器安装扩展程序后菜单栏图标不显示
  12. vue中延时函数用法
  13. 2021-07-09 二维码扫码支付开展进程、主要类型及面临的环境政策
  14. VUE项目配置SSR
  15. 传统BIOS下的USB启动设置
  16. Stata基础:数据显示格式和四舍五入
  17. 没病到一定程度,你千万别去。
  18. 请问如何查询一个APP的Android和iOS下载量?
  19. Linux安装MySQL(源码安装)
  20. FastDfs与ElasticSearch和Mysql完成海量数据存储搜索功能

热门文章

  1. 51nod-1526: 分配笔名
  2. php 脚本本机ip,一键自动更改本机IP地址的批处理脚本
  3. GaiaWorld:区块链行业生态初具雏形
  4. 【报告分享】中国餐饮加盟行业白皮书2021-CCFA美团(附下载)
  5. DataGridView操作详解
  6. HTML5 CSS学习笔记
  7. 表格内容与边框距离调整
  8. 【新零售】新零售业态下,生鲜农产品产业链重构与赋能
  9. Android 获取IP与mac地址
  10. 奋斗在JAVA路上的随手记——函数式接口