282給表示式新增運算子(遞迴回溯 困難)

2021-10-18 19:27:40 字數 565 閱讀 7067

1、題目描述

給定乙個僅包含數字 0-9 的字串和乙個目標值,在數字之間新增二元運算子(不是一元)+、- 或 * ,返回所有能夠得到目標值的表示式。

2、示例

輸入: num = "123", target = 6

輸出: ["1+2+3", "1*2*3"] 

3、題解

基本思想:遞迴回溯,暴力遍歷所有的可能性,時間複雜度o(4^n)

class solution 

void recursion(string& num,int target,int index,long cur,long prenum,string& s)

string temp;

//以當前下標index為起點,遍歷下乙個運算元的所有可能情況

for (int i = index; i < num.size(); i++)

else

//以0開頭的數字只能是0自己這一種情況,其他情況不允許

if (val=="0") return;

}return;

}};

282 給表示式新增運算子

題目描述 給定乙個僅包含數字 0 9 的字串和乙個目標值,在數字之間新增二元運算子 不是一元 或 返回所有能夠得到目標值的表示式。示例 1 輸入 num 123 target 6 輸出 1 2 3 123 示例 2 輸入 num 232 target 8 輸出 23 2 2 32 示例 3 輸入 n...

282 給表示式新增運算子

給定乙個僅包含數字 0 9 的字串 num 和乙個目標值整數 target 在 num 的數字之間新增 二元 運算子 不是一元 或 返回所有能夠得到目標值的表示式。import j a.util.arraylist import j a.util.list class solution return...

LeetCode282 給表示式新增運算子

對於每個位置的兩個數之間,都有四種選擇 加 減 乘 不填符號 這樣兩個數就連在一起構成乙個更大的數 我們可以構造乙個代數結構,使得不管下乙個位置的數是什麼,這個數後面填什麼符號,我們都能記錄前面已經計算過的字串的值。這個代數結構是a b c。a 是我們前面記錄過的字串表示式的值,b是我們當前搜尋到的...