From 09e594c270808fe499ba93f741041799929cf52a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BD=A9=E8=BE=95=E9=BE=99=E5=84=BF?= Date: Sun, 23 Jul 2023 13:38:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=91=A8=E8=B5=9B355?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/contest/y2023/Week355.java | 66 ++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/main/java/contest/y2023/Week355.java diff --git a/src/main/java/contest/y2023/Week355.java b/src/main/java/contest/y2023/Week355.java new file mode 100644 index 0000000..838de81 --- /dev/null +++ b/src/main/java/contest/y2023/Week355.java @@ -0,0 +1,66 @@ +package contest.y2023; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +public class Week355 { + + public static void main(String[] args) { + Week355 so = new Week355(); +// List words = Arrays.asList("one.two.three","four.five","six"); +// char separator = '.'; +// System.out.println(so.splitWordsBySeparator(words,separator)); + List usageLimits = Arrays.asList(2, 2, 2); + System.out.println(so.maxIncreasingGroups(usageLimits)); + } + + public int maxIncreasingGroups(List usageLimits) { + Collections.sort(usageLimits); + int size = usageLimits.size(); + int left = 1; + int right = size; + while (left < right) { + int mid = (left + right + 1) / 2; + int cnt = 0; + for (int i = 1; i <= size; i++) { + cnt += Math.max(0, mid - i); + cnt -= Math.min(cnt, usageLimits.get(size - i - 1)); + } + if (cnt == 0) { + left = mid; + } else { + right = mid - 1; + } + } + return left; + } + + public long maxArrayValue(int[] nums) { + long max = nums[nums.length - 1]; + long cur = nums[nums.length - 1]; + for (int i = nums.length - 2; i >= 0; i--) { + if (nums[i] <= cur) { + cur += nums[i]; + } else { + max = Math.max(max, cur); + cur = nums[i]; + } + } + return Math.max(max, cur); + } + + public List splitWordsBySeparator(List words, char separator) { + List list = new ArrayList<>(); + for (String word : words) { + String[] strs = word.split("\\" + separator); + for (String str : strs) { + if (str.length() > 0) { + list.add(str); + } + } + } + return list; + } +}