diff --git a/src/main/java/contest/y2022/m7/Dw83.java b/src/main/java/contest/y2022/m7/Dw83.java new file mode 100644 index 0000000..615c2a7 --- /dev/null +++ b/src/main/java/contest/y2022/m7/Dw83.java @@ -0,0 +1,72 @@ +package contest.y2022.m7; + +import java.lang.reflect.Array; +import java.util.Arrays; + +public class Dw83 { + public static void main(String[] args) { + Dw83 solution = new Dw83(); + } + + public int shortestSequence(int[] rolls, int k) { + int cnt = 1; + boolean[] uses = new boolean[k + 1]; + int use = k; + for (int i = 0; i < rolls.length; i++) { + if (!uses[rolls[i]]) { + uses[rolls[i]] = true; + use--; + } + if (use == 0) { + cnt++; + Arrays.fill(uses, false); + use = k; + } + } + return cnt; + } + + public long zeroFilledSubarray(int[] nums) { + long cnt = 0; + int[] cnts = new int[nums.length]; + if (nums[0] == 0) { + cnts[0] = 1; + cnt = 1; + } + for (int i = 1; i < nums.length; i++) { + if (nums[i] == 0) { + cnts[i] = cnts[i - 1] + 1; + cnt += cnts[i]; + } + } + return cnt; + } + + public String bestHand(int[] ranks, char[] suits) { + boolean bl = true; + int max = 1; + int cnt = 1; + Arrays.sort(ranks); + for (int i = 1; i < 5; i++) { + if (suits[i] != suits[i - 1]) { + bl = false; + } + if (ranks[i] == ranks[i - 1]) { + cnt++; + } else { + max = Math.max(max, cnt); + cnt = 1; + } + } + max = Math.max(max, cnt); + if (bl) { + return "Flush"; + } else if (max >= 3) { + return "Three of a Kind"; + } else if (max == 2) { + return "Pair"; + } else { + return "High Card"; + } + } +} diff --git a/src/main/java/contest/y2022/m7/NumberContainers.java b/src/main/java/contest/y2022/m7/NumberContainers.java new file mode 100644 index 0000000..b7d488f --- /dev/null +++ b/src/main/java/contest/y2022/m7/NumberContainers.java @@ -0,0 +1,32 @@ +package contest.y2022.m7; + +import java.util.*; + +public class NumberContainers { + Map nums; + Map> map; + + public NumberContainers() { + nums = new HashMap<>(); + map = new HashMap<>(); + } + + public void change(int index, int number) { + if (nums.containsKey(index)) { + map.get(nums.get(index)).remove(index); + } + nums.put(index, number); + TreeSet list = map.getOrDefault(number, new TreeSet<>()); + list.add(index); + map.put(number, list); + } + + public int find(int number) { + TreeSet list = map.getOrDefault(number, new TreeSet<>()); + if (list.size() > 0) { + return list.first(); + } else { + return -1; + } + } +}