力扣周赛241
This commit is contained in:
parent
92d659f115
commit
c4319f8cf5
38
src/main/java/com/code/leet/week/FindSumPairs.java
Normal file
38
src/main/java/com/code/leet/week/FindSumPairs.java
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
package com.code.leet.week;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: 轩辕龙儿
|
||||||
|
* @Date: 2021/5/16 11:03
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
class FindSumPairs {
|
||||||
|
|
||||||
|
int[] nums1;
|
||||||
|
int[] nums2;
|
||||||
|
Map<Integer, Integer> map = new HashMap<>();
|
||||||
|
|
||||||
|
public FindSumPairs(int[] nums1, int[] nums2) {
|
||||||
|
this.nums1 = nums1;
|
||||||
|
this.nums2 = nums2;
|
||||||
|
for (int i = 0; i < nums2.length; i++) {
|
||||||
|
map.put(nums2[i], map.getOrDefault(nums2[i], 0) + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add(int index, int val) {
|
||||||
|
map.put(nums2[index], map.getOrDefault(nums2[index], 0) - 1);
|
||||||
|
map.put(nums2[index] + val, map.getOrDefault(nums2[index] + val, 0) + 1);
|
||||||
|
nums2[index] += val;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int count(int tot) {
|
||||||
|
int count = 0;
|
||||||
|
for (int i = 0; i < nums1.length; i++) {
|
||||||
|
count += map.getOrDefault(tot - nums1[i], 0);
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
}
|
74
src/main/java/com/code/leet/week/Solution241.java
Normal file
74
src/main/java/com/code/leet/week/Solution241.java
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
package com.code.leet.week;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: 轩辕龙儿
|
||||||
|
* @Date: 2021/5/16 10:30
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
public class Solution241 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Solution241 solution = new Solution241();
|
||||||
|
// System.out.println(solution.minSwaps("1110"));
|
||||||
|
// FindSumPairs findSumPairs = new FindSumPairs(new int[]{1, 1, 2, 2, 2, 3},new int[]{1, 4, 5, 2, 5, 4});
|
||||||
|
// System.out.println(findSumPairs.count(7));
|
||||||
|
// findSumPairs.add(3,2);
|
||||||
|
// findSumPairs.count(8);
|
||||||
|
// findSumPairs.count(4);
|
||||||
|
// findSumPairs.add(0,1);
|
||||||
|
// findSumPairs.add(1,1);
|
||||||
|
// findSumPairs.count(7);
|
||||||
|
System.out.println(1^2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int subsetXORSum(int[] nums) {
|
||||||
|
if (nums.length == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return getArr(nums, 0, new ArrayList<>(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getArr(int[] nums, int index, List<Integer> xors, int result) {
|
||||||
|
if (index == nums.length) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
List<Integer> temp = xors;
|
||||||
|
for (int xor : temp) {
|
||||||
|
result += xor ^ nums[index];
|
||||||
|
}
|
||||||
|
result += nums[index];
|
||||||
|
xors.add(nums[index]);
|
||||||
|
return getArr(nums, index + 1, xors, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int minSwaps(String s) {
|
||||||
|
int s0 = s.replace("0", "").length();
|
||||||
|
int s1 = s.replace("1", "").length();
|
||||||
|
if (Math.abs(s0 - s1) > 1) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
int com = 0;
|
||||||
|
int m0 = 0;
|
||||||
|
for (int i = 0; i < s.length(); i++) {
|
||||||
|
if (com != s.charAt(i) - '0') {
|
||||||
|
m0++;
|
||||||
|
}
|
||||||
|
com = 1 - com;
|
||||||
|
}
|
||||||
|
m0 = m0 % 2 == 0 ? m0 : Integer.MAX_VALUE;
|
||||||
|
com = 1;
|
||||||
|
int m1 = 0;
|
||||||
|
for (int i = 0; i < s.length(); i++) {
|
||||||
|
if (com != s.charAt(i) - '0') {
|
||||||
|
m1++;
|
||||||
|
}
|
||||||
|
com = 1 - com;
|
||||||
|
}
|
||||||
|
m1 = m1 % 2 == 0 ? m1 : Integer.MAX_VALUE;
|
||||||
|
return Math.min(m0, m1) / 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user