題目描述:
給你乙個整數陣列 nums 。你需要選擇 恰好 乙個下標(下標從 0 開始)並刪除對應的元素。請注意剩下元素的下標可能會因為刪除操作而發生改變。
比方說,如果 nums = [6,1,7,4,1] ,那麼:
選擇刪除下標 1 ,剩下的陣列為 nums = [6,7,4,1] 。
選擇刪除下標 2 ,剩下的陣列為 nums = [6,1,4,1] 。
選擇刪除下標 4 ,剩下的陣列為 nums = [6,1,7,4] 。
如果乙個陣列滿足奇數下標元素的和與偶數下標元素的和相等,該陣列就是乙個 平衡陣列 。
請你返回刪除操作後,剩下的陣列 nums 是 平衡陣列 的 方案數 。
示例 1:
輸入:nums = [2,1,6,4]
輸出:1
解釋:刪除下標 0 :[1,6,4] -> 偶數元素下標為:1 + 4 = 5 。奇數元素下標為:6 。不平衡。
刪除下標 1 :[2,6,4] -> 偶數元素下標為:2 + 4 = 6 。奇數元素下標為:6 。平衡。
刪除下標 2 :[2,1,4] -> 偶數元素下標為:2 + 4 = 6 。奇數元素下標為:1 。不平衡。
刪除下標 3 :[2,1,6] -> 偶數元素下標為:2 + 6 = 8 。奇數元素下標為:1 。不平衡。
只有一種讓剩餘陣列成為平衡陣列的方案。
示例 2:
輸入:nums = [1,1,1]
輸出:3
解釋:你可以刪除任意元素,剩餘陣列都是平衡陣列。
示例 3:
輸入:nums = [1,2,3]
輸出:0
解釋:不管刪除哪個元素,剩下陣列都不是平衡陣列。
1 <= nums.length <= 105
1 <= nums[i] <= 104
方法1:
主要思路:
(1)先分別統計陣列元素的奇數和和偶數和;
(2)再將統計的陣列和的陣列統一成一種形式,既奇數個元素,便於統一處理;
(3)再逐個的去除各個元素,根據其對後面元素的影響,判斷之後的奇數和和偶數和是否一致;
class
solution
if(nums.
size()
==2)//將奇數和和偶數和統計到同乙個陣列中
vector<
int>
sum_num
(nums.
size()
,0);
//初始化
sum_num[0]
=nums[0]
; sum_num[1]
=nums[1]
;for
(int i=
2;isize()
;++i)
//將陣列統一成一種形式,既有奇數個元素
if(nums.
size()
%2==0
)int res=0;
//統計最終符合要求的數量
//總的奇數和偶數之和的兩個變數
int odd_sum=sum_num[sum_num.
size()
-2];
int even_sum=sum_num.
back()
;//處理前兩個元素的特殊的情形
if(even_sum-nums[0]
==odd_sum)
if(even_sum-nums[0]
==odd_sum-nums[1]
+nums[0]
)//依次去除後面的元素
for(
int i=
2;isize()
;++i)
}else}}
return res;}}
;
Leetcode 1664 生成平衡陣列的方案數
給你乙個整數陣列 nums 你需要選擇 恰好 乙個下標 下標從 0 開始 並刪除對應的元素。請注意剩下元素的下標可能會因為刪除操作而發生改變。比方說,如果 nums 6,1,7,4,1 那麼 選擇刪除下標 1 剩下的陣列為 nums 6,7,4,1 選擇刪除下標 2 剩下的陣列為 nums 6,1,...
生成平衡陣列的方案數
生成平衡陣列的方案數 給你乙個整數陣列nums。你需要選擇 恰好 乙個下標 下標從 0 開始 並刪除對應的元素。請注意剩下元素的下標可能會因為刪除操作而發生改變。比方說,如果nums 6,1,7,4,1 那麼 如果乙個陣列滿足奇數下標元素的和與偶數下標元素的和相等,該陣列就是乙個 平衡陣列 請你返回...
c 11 生成隨機數
過程中需要輸入自變數得到輸出結果。一般來說,如果在定義域中通過列舉的方式選取自變數,所需 要的時間會很長。如果選取特定的點作為自變數,程式或數學模型的正確性無法得到保證。如果隨機選取一定數量 的自變數,所需時間可以依選取的自變數數目而定,的結果能夠反映一般情況下的結果。c 11提供均勻分布 伯努利分...