作者sustainer123 (caster )
看板Marginalman
標題Re: [閒聊] 每日leetcode
時間Mon Apr 29 14:50:28 2024
※ 引述《Rushia (早瀬ユウカの体操服 )》之銘言:
: https://leetcode.com/problems/minimum-number-of-operations-to-make-array-xor-equal-to-k/description
: 2997. Minimum Number of Operations to Make Array XOR Equal to K
: 給你一個陣列nums和一個數字k,我們希望將每個數字xor起來之後等於k,你可以使用一
: 個操作翻轉任意數字的任一位元,求出最少要翻幾次。
: 思路:
: 1.假設 num1 ^ num2 ^ ... numn = x,我們希望 x == k 等價於 x ^ k == 0,所以我們
: 把 nums 的所有元素和 k 做 xor 然後看看翻轉幾個 1 可以令他為 0 即可。
: pycode
: ------------------------------------------
: class Solution:
: def minOperations(self, nums: List[int], k: int) -> int:
: for num in nums:
: k ^= num
: return bin(k).count('1')
: ------------------------------------------
思路:
照抄大老思路 我原本還在一位一位比 母咪
Java Code:
class Solution {
public int minOperations(int[] nums, int k) {
for (int i = 0;i<nums.length;i++){
k = k ^ nums[i];
}
String bit_k=Integer.toBinaryString(k);
int count = 0;
for (int i = 0;i < bit_k.length();i++){
if(String.valueOf(bit_k.charAt(i)).equals("1")){
count++;
}
}
return count;
}
}
有夠難寫 還是python寫起來比較爽
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.155.113 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1714373431.A.729.html
→ Rushia: count = Integer.bitCount(k); 一步就好 04/29 14:52
推 SecondRun: 大師 04/29 14:53
→ sustainer123: 我記一下這函式 剛學java 現在只會基本操作 04/29 14:54
→ sustainer123: 我想說找不到count 所以直接手搓一個 04/29 14:55
推 JIWP: 別卷了 04/29 14:55
→ sustainer123: 速度100%了 感謝大老:)) 04/29 14:57
→ Rushia: Character也滿多靜態好用方法 04/29 14:58
→ sustainer123: 好 我有空研究一下 04/29 15:01