This commit is contained in:
kkunkka
2025-06-24 11:02:05 +08:00
parent 7ee89c530f
commit 1b5422af0f
6 changed files with 107 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
package com.dota.bit._1310;
class Solution {
public int[] xorQueries(int[] arr, int[][] queries) {
var res = new int [queries.length];
var dp = new int[arr.length];
var x = 0;
for (int i = 0; i < arr.length; i++) {
x ^= arr[i];
dp[i] = x;
}
for (int i = 0; i < queries.length; i++) {
if (queries[i][0] == 0) {
res[i] = dp[queries[i][1]];
} else if (queries[i][1] == queries[i][0]) {
res[i] = dp[queries[i][0]];
} else {
res[i] = dp[queries[i][1]] ^ dp[queries[i][0] - 1];
}
}
return res;
}
}

View File

@@ -0,0 +1,17 @@
package com.dota.bit._1829;
class Solution {
public int[] getMaximumXor(int[] nums, int maximumBit) {
var res = new int[nums.length];
var k = (2 << maximumBit) - 1;
var x = 0;
for (int num : nums) {
x ^= num;
}
for (int i = 0; i < nums.length; i++) {
res[i] = x ^ k;
x ^= nums[nums.length - 1 - i];
}
return res;
}
}

View File

@@ -0,0 +1,38 @@
package com.dota.bit._2429;
class Solution {
public static void main(String[] args) {
new Solution().minimizeXor(91, 18);
}
public int minimizeXor(int num1, int num2) {
int c2 = Integer.bitCount(num2);
int c1 = Integer.bitCount(num1);
if (c2 == c1) return num1;
int k = Math.abs(c1 - c2);
if (c1 > c2) {
int x = 0;
int cnt = 0;
for (int i = 0; i < 32; i++) {
if (((1<<i)&num1) != 0) {
x |= (1<<i);
cnt++;
if (cnt == k) break;
}
}
return x ^ num1;
}
int x = 1;
int i = 0;
int t = 1;
while (i < k) {
if ((x & num1) == 0) {
i++;
if (i==k) break;
}
x <<= 1;
t = (t<<1) + 1;
}
return num1 & t;
}
}

View File

@@ -0,0 +1,12 @@
package com.dota.bit._2433;
class Solution {
public int[] findArray(int[] pref) {
var res = new int[pref.length];
res[0] = pref[0];
for (int i = 1; i < pref.length; i++) {
res[i] = pref[i-1]^pref[i];
}
return res;
}
}

View File

@@ -0,0 +1,7 @@
package com.dota.bit._2683;
class Solution {
public boolean doesValidArrayExist(int[] derived) {
return false;
}
}

View File

@@ -0,0 +1,10 @@
package com.dota.bit._2997;
class Solution {
public int minOperations(int[] nums, int k) {
for (int num : nums) {
k ^= num;
}
return Integer.bitCount(k);
}
}