题目如下:

解题思路:24点是非常经典的游戏了,因为本题数据量小,可以使用穷举法,把所有的可能结果都算出来。假设nums = [a,b,c,d],记f(n)表示用nums中n个数字进行运算可以得到的结果集,那么f(4)又可以记为f(4) = U(U(f(1),f(3), U(f(2),f(2))) (U表示合集),而f(3)又可以记为f(3) = U(f(1),f(2))。可知f(1)的结果集就是参数本身,f(2)的结果集是两个参数a,b进行四则运算的结果,最后判断24是否在结果集中即可。有一点要注意的是,除法运算会有浮点数产生,所以与24比较的时候要有一个浮动的区间。

代码如下:

class Solution(object):
def union(self,m,n):
r = []
for i in range(len(m)):
for j in range(len(n)):
r.append(m[i] + n[j])
r.append(m[i] - n[j])
r.append(m[i] * n[j])
if n[j] != 0:
r.append(float(m[i]) / float(n[j]))
if m[i] != 0:
r.append(float(n[j]) / float(m[i]))
return r def calc(self,l):
if len(l) == 1:
return l
elif len(l) == 2:
r = [l[0] + l[1],l[0] - l[1],l[0] * l[1],l[1] - l[0]]
if l[1] != 0:
r.append(float(l[0])/float(l[1]))
if l[0] != 0:
r.append(float(l[1])/float(l[0]))
return r
elif len(l) == 3:
return self.union(self.calc([l[0]]) , self.calc([l[1],l[2]])) + \
self.union(self.calc([l[1]]) , self.calc([l[0],l[2]])) + \
self.union(self.calc([l[2]]) , self.calc([l[0],l[1]])) def judgePoint24(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
r = [([nums[0]], [nums[1], nums[2], nums[3]]), ([nums[1]], [nums[0], nums[2], nums[3]]),
([nums[2]], [nums[0], nums[1], nums[3]]),
([nums[3]], [nums[0], nums[1], nums[2]]), ([nums[0], nums[1]], [nums[2], nums[3]]),
([nums[0], nums[2]], [nums[1], nums[3]]), ([nums[0], nums[3]], [nums[1], nums[2]])] for m,n in r:
m = self.calc(m)
n = self.calc(n)
result = self.union(m,n)
for res in result:
if abs(float(24) - float(res)) < 0.00000001:
return True
return False

【leetcode】679. 24 Game的更多相关文章

  1. 【LeetCode】911. Online Election 解题报告(Python)

    [LeetCode]911. Online Election 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ ...

  2. 【LeetCode】886. Possible Bipartition 解题报告(Python)

    [LeetCode]886. Possible Bipartition 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu ...

  3. 【LeetCode】870. Advantage Shuffle 解题报告(Python)

    [LeetCode]870. Advantage Shuffle 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn ...

  4. 【LeetCode】729. My Calendar I 解题报告

    [LeetCode]729. My Calendar I 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/my-calendar- ...

  5. 【LeetCode】880. Decoded String at Index 解题报告(Python)

    [LeetCode]880. Decoded String at Index 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...

  6. 【LeetCode】86. Partition List 解题报告(Python)

    [LeetCode]86. Partition List 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http:// ...

  7. 【LeetCode】228. Summary Ranges 解题报告(Python)

    [LeetCode]228. Summary Ranges 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/sum ...

  8. 【LeetCode】Minimum Depth of Binary Tree 二叉树的最小深度 java

    [LeetCode]Minimum Depth of Binary Tree Given a binary tree, find its minimum depth. The minimum dept ...

  9. 【Leetcode】Pascal&#39;s Triangle II

    Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return [1,3 ...

随机推荐

  1. CSS重置浏览器所有默认的样式

    ::-webkit-scrollbar-track-piece { width: 8px; height:8px; background-color: #f0f0f0; /* 背景色 */ } ::- ...

  2. 【优化】MySQL千万级大表优化解决方案

    问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ...

  3. CNN笔记:通俗理解卷积神经网络

    CNN笔记:通俗理解卷积神经网络 2016年07月02日 22:14:50 v_JULY_v 阅读数 250368更多 分类专栏: 30.Machine L & Deep Learning 机 ...

  4. 深入理解js——非构造函数的继承

    原文来自阮一峰日志(http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance_continued.ht ...

  5. webpack对脚本和样式的处理

    一.对js处理 webpack本身支持js加载也可以用插件. 1.加载要全局使用的插件比如jquery 在页面用cdn方式引用,然后再webpack.config.js里配置.会让jquery成为全局 ...

  6. 【HDOJ6582】Path(最短路图,最小割)

    题意: n,m<=1e4,c<=1e9 思路: #include<bits/stdc++.h> using namespace std; typedef long long l ...

  7. 三种数据库截取字段内容&&获取字符长度的函数如下

    if(databaseutil.getValue("database").equalsIgnoreCase("sqlserver")){ list =categ ...

  8. bat 需注意

    1. 注释 :: 注释内容,下一行不能是空行,必须是语句否则报错. goto blabla rem 注释内容,则无上述限制. goto blabla 2. if rem 1. 要注意左括号前的空格以及 ...

  9. [题解]Yet Another Subarray Problem-DP 、思维(codeforces 1197D)

    题目链接:https://codeforces.com/problemset/problem/1197/D 题意: 给你一个序列,求一个子序列 a[l]~a[r] 使得该子序列的 sum(l,r)-k ...

  10. Gentoo 搭遗

    安装 app-portage/gentoolkit 使用如下方式,可查询某个被包安装的文件列表,可以筛选文件类型 equey files [--filter=doc] <包名称> emer ...