題目描述:
示例 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,考慮將其進行原語...