給你乙個整數陣列 nums 和乙個整數 target 。1.列舉法請你統計並返回 nums 中能滿足其最小元素與最大元素的 和 小於或等於 target 的 非空 子串行的數目。
由於答案可能很大,請將結果對 10^9 + 7 取餘後返回。
vmin<=vmax<=target-vmin
vmin2<=target
列舉vmin,固定vmin,vmax為vmin到【target-vmin】,對剩餘元素做二分查詢,找到vmax個數,由於vmin2<=target,每個vmin貢獻2^(x-1)
可以先預處理出所有 2^i ( mod( 10 ^9)
+7) 的值,然後對原序列進行排序預處理。
在實現中,我們會用到取模來防止答案過大而溢位,這裡需要用這樣的小技巧來處理:
(a+b)modp=[(amodp)+(bmodp)]modp
(a×b)modp=[(amodp)×(bmodp)]modp
class
solution
}int
numsubseq
(vector<
int>
& nums,
int target)
return ans;}}
;
排序+二分查詢+快速冪
class
solution
return count;
}int
bs(vector<
int>
&a,int t)
else
else}}
return-1
;}intmypow
(int n)
return s;}}
;
LeetCode 1498 滿足條件的子串行數目
給你乙個整數陣列 nums 和乙個整數 target 請你統計並返回 nums 中能滿足其最小元素與最大元素的 和 小於或等於 target 的 非空 子串行的數目。由於答案可能很大,請將結果對 10 9 7 取餘後返回。首先將陣列排序,因為該題處理子串行過程只是計數,和順序無關。class sol...
滿足條件的正整數序列
問題描述 小明想知道,滿足以下條件的正整數序列的數量 第一項為 n 第二項不超過 n 從第三項開始,每一項小於前兩項的差的絕對值。請計算,對於給定的 n,有多少種滿足條件的序列。輸入格式 每一行包含乙個整數n。輸出格式 輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的餘數。樣例輸入 ...
滿足條件的01序列
題目連線 給定n個0和n個1,它們將按照某種順序排成長度為2n的序列,求它們能排列成的所有序列中,能夠滿足任意字首序列中0的個數都不少於1的個數的序列有多少個。輸出的答案對1e9 7取模。輸入格式 共一行,包含整數n。輸出格式 共一行,包含乙個整數,表示答案。資料範圍 1 n 1e5 輸入樣例 3輸...