題目連結(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。做完所有位元之後即可得到所求。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。