From 8fdf791bc58f4cd059d4a2aa8216fce8dcf54938 Mon Sep 17 00:00:00 2001 From: kkunkka Date: Wed, 26 Mar 2025 23:43:13 +0800 Subject: [PATCH] kk --- .../java/com/dota/arr/_2711/Solution.java | 39 +++++++++++++++++++ src/main/java/com/dota/dp/_1696/Solution.java | 28 +++++++++++++ .../java/com/dota/math/_2829/Solution.java | 25 ++++++++++++ .../com/dota/slidingWindow/_239/Solution.java | 26 +++++++++++++ 4 files changed, 118 insertions(+) create mode 100644 src/main/java/com/dota/arr/_2711/Solution.java create mode 100644 src/main/java/com/dota/dp/_1696/Solution.java create mode 100644 src/main/java/com/dota/math/_2829/Solution.java create mode 100644 src/main/java/com/dota/slidingWindow/_239/Solution.java diff --git a/src/main/java/com/dota/arr/_2711/Solution.java b/src/main/java/com/dota/arr/_2711/Solution.java new file mode 100644 index 0000000..031a54a --- /dev/null +++ b/src/main/java/com/dota/arr/_2711/Solution.java @@ -0,0 +1,39 @@ +package com.dota.arr._2711; + +import java.util.HashSet; + +class Solution { + public int[][] differenceOfDistinctValues(int[][] grid) { + int n= grid.length, m = grid[0].length; + var res = new int[n][m]; + var set = new HashSet(); + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + int ii=i-1,jj=j-1; + set.clear(); + int lcnt = 0; + int rcnt = 0; + while(ii>=0 && jj>=0) { + if (!set.contains(grid[ii][jj])) { + lcnt++; + set.add(grid[ii][jj]); + } + ii--; + jj--; + } + set.clear(); + ii = i+1; + jj = j+1; + while(ii deque = new ArrayDeque<>(); + deque.add(0); + for (int i = 1; i=k&&deque.peek() < i-k+1) { + deque.pollFirst(); + } + } + return dp[n - 1]; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/math/_2829/Solution.java b/src/main/java/com/dota/math/_2829/Solution.java new file mode 100644 index 0000000..9ba5024 --- /dev/null +++ b/src/main/java/com/dota/math/_2829/Solution.java @@ -0,0 +1,25 @@ +package com.dota.math._2829; + +class Solution { + public int minimumSum(int n, int k) { + int sum = 0; + int cnt = 0; + var dp = new boolean[50]; + int i = 1; + while(cnt deque = new ArrayDeque<>(); + int[] res = new int[nums.length - k + 1]; + for (int i = 0; i < nums.length; i++) { + while (!deque.isEmpty() && nums[i] > nums[deque.peekLast()]) { + deque.pollLast(); + } + + deque.offerLast(i); + if (deque.peekFirst() < i - k + 1) { + deque.pollFirst(); + } + + if (i >= k - 1) { + res[i - k + 1] = nums[deque.peek()]; + } + } + return res; + } +} \ No newline at end of file