From 471bf5c0d5040a88f0e240aba5a7c5337bb930ee Mon Sep 17 00:00:00 2001 From: kkunkka Date: Wed, 2 Apr 2025 15:47:50 +0800 Subject: [PATCH] kk --- .../java/com/dota/arr/_2873/Solution.java | 16 +++++++++ src/main/java/com/dota/dp/_1177/Solution.java | 21 ++++++++++++ .../java/com/dota/hard/_1542/Solution.java | 25 ++++++++++++++ .../java/com/dota/str/_1542/Solution.java | 34 +++++++++++++++++++ 4 files changed, 96 insertions(+) create mode 100644 src/main/java/com/dota/arr/_2873/Solution.java create mode 100644 src/main/java/com/dota/dp/_1177/Solution.java create mode 100644 src/main/java/com/dota/hard/_1542/Solution.java create mode 100644 src/main/java/com/dota/str/_1542/Solution.java diff --git a/src/main/java/com/dota/arr/_2873/Solution.java b/src/main/java/com/dota/arr/_2873/Solution.java new file mode 100644 index 0000000..e366b66 --- /dev/null +++ b/src/main/java/com/dota/arr/_2873/Solution.java @@ -0,0 +1,16 @@ +package com.dota.arr._2873; + +class Solution { + public long maximumTripletValue(int[] nums) { + long res = 0; + long max = Math.max(nums[0], nums[1]); + long num = nums[0] - nums[1]; + int n = nums.length; + for (int i = 2; i < n; i++) { + res = Math.max(res, num * nums[i]); + num = Math.max(num, max - nums[i]); + max = Math.max(max, nums[i]); + } + return res; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/dp/_1177/Solution.java b/src/main/java/com/dota/dp/_1177/Solution.java new file mode 100644 index 0000000..63aa99c --- /dev/null +++ b/src/main/java/com/dota/dp/_1177/Solution.java @@ -0,0 +1,21 @@ +package com.dota.dp._1177; + +import java.util.ArrayList; +import java.util.List; + +class Solution { + public List canMakePaliQueries(String s, int[][] queries) { + List list = new ArrayList<>(); + int n = s.length(); + var dp = new int[n + 1]; + for (int i = 0; i < s.length(); i++) { + dp[i + 1] = dp[i] ^ (1 << s.charAt(i) - 'a') ; + } + + for (int[] query : queries) { + int l = query[0], r = query[1], k = query[2]; + list.add(Integer.bitCount(dp[l] ^ dp[r+1]) / 2 <= k); + } + return list; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/hard/_1542/Solution.java b/src/main/java/com/dota/hard/_1542/Solution.java new file mode 100644 index 0000000..e935de3 --- /dev/null +++ b/src/main/java/com/dota/hard/_1542/Solution.java @@ -0,0 +1,25 @@ +package com.dota.hard._1542; + +import java.util.Arrays; + +class Solution { + public int longestAwesome(String s) { + int n = s.length(); + int[] pos = new int[1 << 10]; + Arrays.fill(pos, n); // n 表示没有找到异或前缀和 + pos[0] = -1; // pre[-1] = 0 + int ans = 0; + int pre = 0; + for (int i = 0; i < n; i++) { + pre ^= 1 << (s.charAt(i) - '0'); + for (int d = 0; d < 10; d++) { + ans = Math.max(ans, i - pos[pre ^ (1 << d)]); // 奇数 + } + ans = Math.max(ans, i - pos[pre]); // 偶数 + if (pos[pre] == n) { // 首次遇到值为 pre 的前缀异或和,记录其下标 i + pos[pre] = i; + } + } + return ans; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/str/_1542/Solution.java b/src/main/java/com/dota/str/_1542/Solution.java new file mode 100644 index 0000000..1e105fb --- /dev/null +++ b/src/main/java/com/dota/str/_1542/Solution.java @@ -0,0 +1,34 @@ +package com.dota.str._1542; + +class Solution { + public int longestAwesome(String s) { + int sum = 0; + for (int i = 0; i < s.length(); i++) { + for (int j = i; j < s.length(); j++) { + if (check(s,i,j+1)) { + sum = Math.max(sum, j-i+1); + } + } + + } + return sum; + } + + boolean check(String s, int l, int r) { + int[] dp = new int[10]; + for (int i =l;i