diff --git a/src/main/java/com/code/leet/week/FindSumPairs.java b/src/main/java/com/code/leet/week/FindSumPairs.java new file mode 100644 index 0000000..2351f6e --- /dev/null +++ b/src/main/java/com/code/leet/week/FindSumPairs.java @@ -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 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; + } +} diff --git a/src/main/java/com/code/leet/week/Solution241.java b/src/main/java/com/code/leet/week/Solution241.java new file mode 100644 index 0000000..95ca4f3 --- /dev/null +++ b/src/main/java/com/code/leet/week/Solution241.java @@ -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 xors, int result) { + if (index == nums.length) { + return result; + } + List 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; + } +} + +