1590 使陣列和能被 P 整除

2021-10-09 16:21:40 字數 1042 閱讀 8214

1590.使陣列和能被p整除

給你乙個正整數陣列 nums,請你移除 最短 子陣列(可以為 空),使得剩餘元素的 和 能被 p 整除。 不允許 將整個陣列都移除。

請你返回你需要移除的最短子陣列的長度,如果無法滿足題目要求,返回 -1 。

子陣列 定義為原陣列中連續的一組元素。

示例 1:

輸入:nums = [3,1,4,2], p = 6

輸出:1

解釋:nums 中元素和為 10,不能被 p 整除。我們可以移除子陣列 [4] ,剩餘元素的和為 6 。

示例 2:

輸入:nums = [6,3,5,2], p = 9

輸出:2

解釋:我們無法移除任何乙個元素使得和被 9 整除,最優方案是移除子陣列 [5,2] ,剩餘元素為 [6,3],和為 9 。

示例 3:

輸入:nums = [1,2,3], p = 3

輸出:0

解釋:和恰好為 6 ,已經能被 3 整除了。所以我們不需要移除任何元素。

示例  4:

輸入:nums = [1,2,3], p = 7

輸出:-1

解釋:沒有任何方案使得移除子陣列後剩餘元素的和被 7 整除。

示例 5:

輸入:nums = [1000000000,1000000000,1000000000], p = 3

輸出:0

1 <= nums.length <= 105

1 <= nums[i] <= 109

1 <= p <= 109

思路:這道題有點像974這道題

int minsubarray(vector& nums, int p) 

int r=sum;

if(r==0)

int ans=nums.size();

sum=0;

ht[0]=-1;

for(int i=0;iht[sum%p]=i;

}return ans==nums.size()?-1:ans;

}

GPIO時鐘使能和串列埠時鐘使能的關係

由於stm32有很多外設,為降低功耗,每個外設都對應著乙個時鐘。在晶元剛剛上電時,這些時鐘都是被關閉的。如果想要外設工作,必須把相應的時鐘開啟。即當gpio口復用usart進行通訊時,必須要先使能gpio的時鐘,然後再使能具體外設的時鐘 usart的時鐘 1.stm32微控制器的i o埠配置步驟 1...

門控時鐘和時鐘使能

在fpga設計中,我們經常會使用分頻的方法來得到乙個我們需要的時鐘頻率,而在很多開發板廠家配套的教程裡,他們常常會使用計數器分頻得到的高低電平時鐘來當做驅動時鐘,這種方法簡單易懂,但是,在工程設計中,這種方法是不被允許的。門控時鐘就是使用計數器和邏輯門翻轉來產生的時鐘,下面是典型的門控時鐘 生成i2...

MFC 實現工具欄按鈕和選單使能禁能

cmainframe在應用程式空閒的時候才根據命令處理 on update command ui 更新介面,包括選單 工具欄。於是,正確的使能禁能按鈕只能通過命令流來處理。先在cmainframe類中設定乙個bool變數m bbuttonen。然後對相應的工具欄按鈕新增更新命令on update c...