力扣 1658 將 x 減到 0 的最小運算元

2021-10-10 16:58:31 字數 942 閱讀 5535

題目描述:

示例 1:

輸入:nums =[1

,1,4

,2,3

], x =

5輸出:2

解釋:最佳解決方案是移除後兩個元素,將 x 減到 0 。

示例 2:

輸入:nums =[5

,6,7

,8,9

], x =

4輸出:-

1示例 3:

輸入:nums =[3

,2,20

,1,1

,3], x =

10輸出:5

解釋:最佳解決方案是移除後三個元素和前兩個元素(總共 5 次操作),將 x 減到 0 。

1<= nums.length <=

1051

<= nums[i]

<=

1041

<= x <=

109

第一眼看到這道題的時候,首先想到用博弈dp,卡了半天沒寫出來(我太菜了

看題解通過反向考慮,判斷從nums兩頭減數字能否等於x, 相當於判斷陣列nums是否有子陣列和恰好等於陣列總和sum-x,並求取最大長度。用雙指標或者滑動視窗遍歷陣列計算最長和為sum-x的子陣列長度。(哎,自己為什麼沒想到呢)

最終呈現**:

int

minoperations

(vector<

int>

& nums,

int x)

if(maxv==-1

)return-1

;return n-maxv;

}

將 x 減到 0 的最小運算元

給你乙個整數陣列nums和乙個整數x。每一次操作時,你應當移除陣列nums最左邊或最右邊的元素,然後從x中減去該元素的值。請注意,需要修改陣列以供接下來的操作使用。如果可以將x恰好減到0,返回最小運算元 否則,返回 1。示例 1 輸入 nums 1,1,4,2,3 x 5輸出 2解釋 最佳解決方案是...

1657 將 x 減到 0 的最小運算元

題目描述 給你乙個整數陣列 nums 和乙個整數 x 每一次操作時,你應當移除陣列 nums 最左邊或最右邊的元素,然後從 x 中減去該元素的值。請注意,需要 修改 陣列以供接下來的操作使用。如果可以將 x 恰好 減到 0 返回 最小運算元 否則,返回 1 示例 1 輸入 nums 1,1,4,2,...

力扣簡單專欄 1021 刪除最外層的括號

有效括號字串為空 a 或 a b,其中 a 和 b 都是有效的括號字串,代表字串的連線。例如,和 都是有效的括號字串。如果有效字串 s 非空,且不存在將其拆分為 s a b 的方法,我們稱其為原語 primitive 其中 a 和 b 都是非空有效括號字串。給出乙個非空有效字串 s,考慮將其進行原語...