This commit is contained in:
kkunkka
2025-04-26 12:22:29 +08:00
parent e63e890b41
commit 12d32a4342
2 changed files with 80 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
package com.dota.slidingWindow._1577;
import java.util.Arrays;
class Solution {
public static void main(String[] args) {
new Solution().numTriplets(new int[]{7,1,7,3,6,2,6,4,2,6,}, new int[]{5,5,2,2,7,1,7,2,6,7,6});
}
public int numTriplets(int[] nums1, int[] nums2) {
Arrays.sort(nums1);
Arrays.sort(nums2);
return df(nums1, nums2) + df(nums2, nums1);
}
int df(int[] nums1, int[] nums2) {
var dp = new long[nums1.length];
for (int i = 0; i < nums1.length; i++) {
dp[i] = (long) nums1[i] * nums1[i];
}
int cnt = 0;
for (long j : dp) {
int l = 0, r = nums2.length - 1;
while (l < r) {
long t = (long) nums2[l] * nums2[r];
if (t == j) {
if (nums2[l] == nums2[r]) {
cnt += ((r - l) * (r - l + 1) / 2);
break;
} else {
int ll = 1;
int rr = 1;
while (nums2[l+1] == nums2[l]) {
l++;
ll++;
}
while (nums2[r-1] == nums2[r]) {
r--;
rr++;
}
cnt += ll*rr;
l++;
r--;
}
} else if (t > j) {
r--;
} else {
l++;
}
}
}
return cnt;
}
}

View File

@@ -0,0 +1,25 @@
package com.dota.slidingWindow._2444;
class Solution {
public long countSubarrays(int[] nums, int minK, int maxK) {
long res = 0;
int min = -1, max = -1;
int l = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] < minK || nums[i] > maxK) {
min = -1;
max = -1;
l = i+1;
} if (nums[i] == maxK) {
max = i;
} if (nums[i] == minK) {
min = i;
}
if (max != -1 && min != -1) {
res += Math.min(max, min) + 1 - l;
}
}
return res;
}
}