This commit is contained in:
kkunkka
2025-03-26 23:43:13 +08:00
parent f171e6504c
commit 8fdf791bc5
4 changed files with 118 additions and 0 deletions

View File

@@ -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<Integer>();
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<n&&jj<m) {
if (!set.contains(grid[ii][jj])) {
rcnt++;
set.add(grid[ii][jj]);
}
ii++;jj++;
}
res[i][j] = Math.abs(lcnt-rcnt);
}
}
return res;
}
}

View File

@@ -0,0 +1,28 @@
package com.dota.dp._1696;
import java.util.ArrayDeque;
import java.util.Deque;
class Solution {
public int maxResult(int[] nums, int k) {
int n = nums.length;
var dp = new int[n];
dp[0] = nums[0];
Deque<Integer> deque = new ArrayDeque<>();
deque.add(0);
for (int i = 1; i<n; i++) {
int t = nums[i] + dp[deque.peek()];
dp[i] = t;
while(!deque.isEmpty() && dp[deque.peekLast()] <= t) {
deque.pollLast();
}
deque.addLast(i);
if (i>=k&&deque.peek() < i-k+1) {
deque.pollFirst();
}
}
return dp[n - 1];
}
}

View File

@@ -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<n) {
if (i<k) {
if(!dp[i]) {
sum += i;
dp[k - i] = true;
cnt++;
}
} else {
sum += i;
cnt++;
}
i++;
}
return sum;
}
}

View File

@@ -0,0 +1,26 @@
package com.dota.slidingWindow._239;
import java.util.ArrayDeque;
import java.util.Deque;
class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
Deque<Integer> 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;
}
}