diff --git a/src/main/java/contest/y2022/m11/DW92.java b/src/main/java/contest/y2022/m11/DW92.java new file mode 100644 index 0000000..5b71e11 --- /dev/null +++ b/src/main/java/contest/y2022/m11/DW92.java @@ -0,0 +1,100 @@ +package contest.y2022.m11; + +public class DW92 { + public static void main(String[] args) { + DW92 solution = new DW92(); + System.out.println(solution.bestClosingTime("YYNY")); + } + + public int countPalindromes(String s) { + int size = s.length(); + int[][] arrl = new int[size][10]; + int[][] arrr = new int[size][10]; + long[][] al = new long[size][100]; + long[][] ar = new long[size][100]; + int mod = 1000000007; + for (int i = 0; i < s.length(); i++) { + if (i > 0) { + for (int j = 0; j < 10; j++) { + arrl[i][j] += arrl[i - 1][j]; + arrr[s.length() - 1 - i][j] += arrr[s.length() - i][j]; + } + } + if (i < s.length() - 1) { + arrl[i + 1][s.charAt(i - 1) - '0']++; + arrr[s.length() - 2 - i][s.charAt(s.length() - i) - '0']++; + } + if (i > 1) { + for (int j = 0; j < 100; j++) { + ar[i][j] = ar[i - 1][j]; + ar[s.length() - 1 - i][j] = ar[s.length() - i][j]; + } + } + if (i < s.length() - 1) { + int num = s.charAt(i - 1) - '0'; + for (int j = 0; j < 10; j++) { + al[i + 1][num * 10 + j] += arrl[i][j]; + ar[s.length() - 2 - i][j * 10 + num] += arrr[i][j]; + } + } + } + long res = 0; + for (int i = 2; i < s.length() - 2; i++) { + for (int j = 0; j < 100; j++) { + res = (Math.min(al[i][j], ar[i][j]) + res) % mod; + } + } + return (int) res; + } + + public int bestClosingTime(String customers) { + int[] arry = new int[customers.length() + 1]; + int[] arrn = new int[customers.length() + 1]; + for (int i = 0; i < customers.length(); i++) { + arrn[i + 1] = arrn[i] + (customers.charAt(i) == 'N' ? 1 : 0); + arry[customers.length() - i - 1] = arry[customers.length() - i] + (customers.charAt(customers.length() - i - 1) == 'Y' ? 1 : 0); + } + int min = arrn[0] + arry[0]; + int res = 0; + for (int i = 1; i < customers.length() + 1; i++) { + int tmp = arrn[i] + arry[i]; + if (min > tmp) { + min = tmp; + res = i; + } + } + return res; + } + + public int[][] onesMinusZeros(int[][] grid) { + int xl = grid.length; + int yl = grid[0].length; + int[] x0 = new int[xl]; + int[] y0 = new int[yl]; + int[] x1 = new int[xl]; + int[] y1 = new int[yl]; + for (int i = 0; i < xl; i++) { + for (int j = 0; j < yl; j++) { + if (grid[i][j] == 0) { + x0[i]++; + y0[j]++; + } + if (grid[i][j] == 1) { + x1[i]++; + y1[j]++; + } + } + } + int[][] diff = new int[xl][yl]; + for (int i = 0; i < xl; i++) { + for (int j = 0; j < yl; j++) { + diff[i][j] = x1[i] + y1[j] - x0[i] - y0[j]; + } + } + return diff; + } + + public int numberOfCuts(int n) { + return n % 2 == 0 ? n / 2 : n; + } +} diff --git a/src/main/java/contest/y2022/m12/Week322.java b/src/main/java/contest/y2022/m12/Week322.java new file mode 100644 index 0000000..2e05536 --- /dev/null +++ b/src/main/java/contest/y2022/m12/Week322.java @@ -0,0 +1,74 @@ +package contest.y2022.m12; + +import com.code.leet.entiy.TwoArray; +import javafx.util.Pair; + +import java.util.*; + +public class Week322 { + public static void main(String[] args) { + Week322 solution = new Week322(); + //System.out.println(solution.isCircularSentence("leetcode exercises sound delightful")); + TwoArray twoArray = new TwoArray("[[1,2,9],[2,3,6],[2,4,5],[1,4,7]]", true); + System.out.println(solution.minScore(4, twoArray.getArr())); + } + + public int minScore(int n, int[][] roads) { + Map>> map = new HashMap<>(n); + for (int i = 1; i <= n; i++) { + map.put(i, new ArrayList<>()); + } + for (int[] road : roads) { + List> list = map.get(road[0]); + list.add(new Pair<>(road[1], road[2])); + map.put(road[0], list); + list = map.get(road[1]); + list.add(new Pair<>(road[0], road[2])); + map.put(road[1], list); + } + int min = Integer.MAX_VALUE; + Queue> queue = new LinkedList<>(); + boolean[] use = new boolean[n + 1]; + use[1] = true; + for (Pair pair : map.get(1)) { + queue.add(pair); + } + while (!queue.isEmpty()) { + Pair pair = queue.poll(); + min = Math.min(min, pair.getValue()); + if (!use[pair.getKey()]) { + queue.addAll(map.get(pair.getKey())); + queue.add(pair); + use[pair.getKey()] = true; + } + } + return min; + } + + public long dividePlayers(int[] skill) { + Arrays.sort(skill); + int sum = skill[0] + skill[skill.length - 1]; + long res = (long) skill[0] * skill[skill.length - 1]; + for (int i = 1; i < skill.length / 2; i++) { + int tmp = skill[i] + skill[skill.length - 1 - i]; + if (sum != tmp) { + return -1; + } + res += (long) skill[i] * skill[skill.length - 1 - i]; + } + return res; + } + + public boolean isCircularSentence(String sentence) { + String[] strs = sentence.split(" "); + if (strs[0].charAt(0) != strs[strs.length - 1].charAt(strs[strs.length - 1].length() - 1)) { + return false; + } + for (int i = 1; i < strs.length; i++) { + if (strs[i - 1].charAt(strs[i - 1].length() - 1) != strs[i].charAt(0)) { + return false; + } + } + return true; + } +}