From 45fb9f1db2a884570fb37db6fddfa19517de52d7 Mon Sep 17 00:00:00 2001 From: kkunkka Date: Fri, 11 Apr 2025 10:52:38 +0800 Subject: [PATCH] kk --- .../dota/slidingWindow/_1537/Solution.java | 34 +++++++++ .../dota/slidingWindow/_2106/Solution.java | 71 +++++++++++++++++++ .../java/com/dota/str/_2843/Solution.java | 24 +++++++ 3 files changed, 129 insertions(+) create mode 100644 src/main/java/com/dota/slidingWindow/_1537/Solution.java create mode 100644 src/main/java/com/dota/slidingWindow/_2106/Solution.java create mode 100644 src/main/java/com/dota/str/_2843/Solution.java diff --git a/src/main/java/com/dota/slidingWindow/_1537/Solution.java b/src/main/java/com/dota/slidingWindow/_1537/Solution.java new file mode 100644 index 0000000..43e3ec2 --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_1537/Solution.java @@ -0,0 +1,34 @@ +package com.dota.slidingWindow._1537; + +class Solution { + public int maxSum(int[] nums1, int[] nums2) { + long sum1 = 0, sum2 = 0; + int i = 0, j = 0; + int n = nums1.length, m = nums2.length; + while (i < n && j < m) { + if (nums1[i] < nums2[j]) { + sum1 += nums1[i]; + i++; + } else if (nums1[i] > nums2[j]) { + sum2 += nums2[j]; + j++; + } else { + sum1+=nums1[i++]; + sum2+=nums2[j++]; + if (sum1 > sum2) { + sum2 = sum1; + } else { + sum1 = sum2; + } + } + } + while (i < n) { + sum1 += nums1[i++]; + } + while (j < m) { + sum2+= nums2[j++]; + } + + return (int) (Math.max(sum1, sum2) % 1000000007); + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/slidingWindow/_2106/Solution.java b/src/main/java/com/dota/slidingWindow/_2106/Solution.java new file mode 100644 index 0000000..8c46631 --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_2106/Solution.java @@ -0,0 +1,71 @@ +package com.dota.slidingWindow._2106; + +class Solution { + public static void main(String[] args) { + new Solution().maxTotalFruits(new int[][]{ + {0, 7}, {7, 4}, {9, 10}, {12, 6}, {14, 8}, + {16, 5}, {17, 8}, {19, 4}, {20, 1}, {21, 3}, + {24, 3}, {25, 3}, {26, 1}, {28, 10}, {30, 9}, + {31, 6}, {32, 1}, {37, 5}, {40, 9} + }, 21, 30); + } + + public int maxTotalFruits(int[][] fruits, int startPos, int k) { + int max = Math.max(startPos, fruits[fruits.length - 1][0]); + var dp = new int[max + 1]; + for (var f : fruits) { + dp[f[0]] = f[1]; + } + + var sum = 0; + int start = startPos - k; + for (int i = start; i <= startPos && i < dp.length; i++) { + if (i >= 0) { + sum += dp[i]; + } + } + + int res = sum; + int r = startPos - k; + for (int i = start; i < startPos; i++) { + if (i >= 0) { + sum -= dp[i]; + } + r++; + if (r > startPos && r < dp.length) { + sum += dp[r]; + } + r++; + if (r > startPos && r < dp.length) { + sum += dp[r]; + } + res = Math.max(res, sum); + } + + start = startPos + k; + sum = 0; + for (int i = start; i >= startPos; i--) { + if (i < dp.length) { + sum += dp[i]; + } + } + + int l = startPos + k; + for (int i = start; i > startPos; i--) { + if (i < dp.length) { + sum -= dp[i]; + } + l--; + if (l > 0 && l < dp.length && l < startPos) { + sum += dp[l]; + } + l--; + if (l > 0 && l < dp.length && l < startPos) { + sum += dp[l]; + } + + res = Math.max(res, sum); + } + return res; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/str/_2843/Solution.java b/src/main/java/com/dota/str/_2843/Solution.java new file mode 100644 index 0000000..55ffb0e --- /dev/null +++ b/src/main/java/com/dota/str/_2843/Solution.java @@ -0,0 +1,24 @@ +package com.dota.str._2843; + +class Solution { + public int countSymmetricIntegers(int low, int high) { + int count = 0; + for (int i = low; i <= high; i++) { + String s = Integer.toString(i); + int n = s.length(); + if (n%2!=0) { + continue; + } + + int l = 0, r = 0; + for (int j = 0; j < n/2; j++) { + l += s.charAt(j)-'0'; + } + for (int j = n/2; j < n; j++) { + r += s.charAt(j)-'0'; + } + if (l==r) count++; + } + return count; + } +} \ No newline at end of file