1498 滿足條件的子串行數目

2021-10-09 11:14:07 字數 933 閱讀 7568

給你乙個整數陣列 nums 和乙個整數 target 。

請你統計並返回 nums 中能滿足其最小元素與最大元素的 和 小於或等於 target 的 非空 子串行的數目。

由於答案可能很大,請將結果對 10^9 + 7 取餘後返回。

1.列舉法

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輸...