leetcode79. 24 点游戏
生活随笔
收集整理的這篇文章主要介紹了
leetcode79. 24 点游戏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
你有 4 張寫有 1 到 9 數字的牌。你需要判斷是否能通過 *,/,+,-,(,) 的運算得到 24。
示例 1:
輸入: [4, 1, 8, 7]
輸出: True
解釋: (8-4) * (7-1) = 24
代碼
class Solution {public boolean judgePoint24(int[] nums) {List<Double> list=new ArrayList<>();for (int c:nums) list.add((double)c);//將4個數加入listreturn getJudgePoint24(list);}public boolean getJudgePoint24(List<Double> list) {if(list.size()==0) return false;//沒有符合的if(list.size()==1) return Math.abs(list.get(0)-24)<1e-6;//判斷最后結果for(int i=0;i<list.size();i++)//任意取兩個數for(int j=0;j<list.size();j++){if(i!=j){List<Double> temp=new ArrayList<>();for(int k=0;k<list.size();k++)//將剩余的數字加入下一層list{if(k!=i&&k!=j)temp.add(list.get(k));}for(int k=0;k<4;k++)//運算選出的兩個數,并將結果加入list{if(k<2&&j>i) continue;if(k==0) temp.add(list.get(i)+list.get(j));if(k==1) temp.add(list.get(i)*list.get(j));if(k==2) temp.add(list.get(i)-list.get(j));if(k==3){if(list.get(j)==0) continue;//分母不能為0temp.add(list.get(i)/list.get(j));}if(getJudgePoint24(temp)) return true;temp.remove(temp.size()-1);//回溯}}}return false;} }總結
以上是生活随笔為你收集整理的leetcode79. 24 点游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到进监狱是什么征兆
- 下一篇: leetcode713. 乘积小于K的子