ETH官方钱包

前往
大廳
主題

LeetCode - 2917. Find the K-or of an Array 解題心得

Not In My Back Yard | 2024-12-26 12:00:13 | 巴幣 2 | 人氣 38

題目連結(jié):


題目意譯:
你被給定一個整數(shù)陣列 nums 以及一個整數(shù) k。讓我們推廣標準的按位元(Bitwise)OR 操作來定義「K-or」操作。在 K-or 操作中,某一個位元在結(jié)果中是 1,代表著在 nums 至少有 k 個數(shù)字在對應位元的位置都是 1。

回傳 nums 的 K-or 值。

限制:
1 ≦ nums.length ≦ 50
0 ≦ nums[i] < 2 ^ 31
1 ≦ k ≦ nums.length



範例測資:
範例 1:
輸入: nums = [7,12,9,8,9,15], k = 4
輸出: 9
解釋:
各個數(shù)字的二進位制表示法:
數(shù)字 位元 3 位元 2 位元 1 位元 0
7 0 1 1 1
12 1 1 0 0
9 1 0 0 1
8 1 0 0 0
9 1 0 0 1
15 1 1 1 1
結(jié)果 = 9 1 0 0 1
位元 0 在 7 、 9 、 9 和 15 都是 1。位元 3 在 12 、 9 、 8 、 9 和 15 都是 1。
因此只有位元 0 和 3 符合條件。結(jié)果為 (1001)2 = 9。

範例 2:
輸入: nums = [2,12,1,11,4,5], k = 6
輸出: 0
解釋: 沒有任何位元如同條件 k == 6 在六個數(shù)字中全部為 1。因此結(jié)果為 0。

範例 3:
輸入: nums = [10,8,5,9,11,6,8], k = 1
輸出: 15
解釋: 由於 k == 1,陣列的 1-or 值即等於其所有元素按位元 OR 之值。因此答案為 10 OR 8 OR 5 OR 9 OR 11 OR 6 OR 8 = 15。


解題思維:
很單純地窮舉每一個位元並掃過 nums 中每一個數(shù)字的對應位元並統(tǒng)計有沒有超過 k 個即可決定該位元最後是否為 1。做完所有位元之後即可得到所求。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。
追蹤 創(chuàng)作集

作者相關(guān)創(chuàng)作

更多創(chuàng)作