This commit is contained in:
kkunkka
2023-12-14 18:42:45 +08:00
parent 199895132f
commit 740ac4a36a
7 changed files with 174 additions and 2 deletions

3
.idea/misc.xml generated
View File

@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
@@ -8,7 +7,7 @@
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_X" default="true" project-jdk-name="21" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View File

@@ -0,0 +1,18 @@
package com.dota;
public class ListNode {
public int val;
public ListNode next;
public ListNode() {
}
public ListNode(int val) {
this.val = val;
}
public ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}

View File

@@ -0,0 +1,60 @@
package com.dota.arr._2132;
/**
* 用邮票贴满网格图
*/
class Solution {
public boolean possibleToStamp(int[][] grid, int stampHeight, int stampWidth) {
var n = grid.length;
var m = grid[0].length;
var dp = new int[n][m][2];
var sum = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
dp[i][j][0] = 1;
dp[i][j][1] = 1;
if (grid[i][j] == 1) {
dp[i][j][0] = 0;
dp[i][j][1] = 0;
sum++;
continue;
}
if (i != 0) {
dp[i][j][1] += dp[i - 1][j][1] ;
}
if (j != 0) {
dp[i][j][0] += dp[i][j - 1][0] ;
}
}
}
for (var i = n - 1; i >= 0; i--) {
for (var j = m - 1; j >= 0; j--) {
if (grid[i][j] == 1) {
continue;
}
if (i != n - 1) {
dp[i][j][1] = Math.max(dp[i][j][1], dp[i + 1][j][1]);
}
if (j != m - 1) {
dp[i][j][0] = Math.max(dp[i][j][0], dp[i][j + 1][0]);
}
if (dp[i][j][0] < stampWidth || dp[i][j][1] < stampHeight) {
return false;
}
}
}
return sum != n * m;
}
public static void main(String[] args) {
new Solution().possibleToStamp(new int[][]{{1,0,0,0},{1,0,0,0},{1,0,0,0},{1,0,0,0},{1,0,0,0}}, 4, 3);
}
}

View File

@@ -0,0 +1,29 @@
package com.dota.arr._807;
/**
* 保持城市天际线
*/
class Solution {
public int maxIncreaseKeepingSkyline(int[][] grid) {
var sum = 0;
var n = grid.length;
var dp = new int[n][2];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (grid[i][j] > dp[i][0]) {
dp[i][0] = grid[i][j];
}
if (grid[i][j]>dp[j][1]) {
dp[j][1] = grid[i][j];
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
sum += Math.min(dp[i][1],dp[j][0]) - grid[i][j];
}
}
return sum;
}
}

View File

@@ -0,0 +1,5 @@
package com.dota.math;
class Solution {
}

View File

@@ -0,0 +1,32 @@
package com.dota.math._1769;
/**
* 移动所有球到每个盒子所需的最小操作数
*/
class Solution {
public int[] minOperations(String boxes) {
int n = boxes.length();
var res = new int[n];
var left = boxes.charAt(0) - '0';
var right = 0;
int sum = 0;
for (int i = 1; i < n; i++) {
if (boxes.charAt(i) == '1') {
right ++;
sum += i;
}
}
res[0] = sum;
for (int i = 1; i < n; i++) {
sum += left - right;
res[i] = sum;
if (boxes.charAt(i) == '1') {
left++;
right--;
}
}
return res;
}
}

View File

@@ -0,0 +1,29 @@
package com.dota.math._2807;
import com.dota.ListNode;
/**
* 2807. 在链表中插入最大公约数
*/
class Solution {
public ListNode insertGreatestCommonDivisors(ListNode head) {
var p = head;
while (p.next != null) {
var t = p.next;
var v = cal(p.val, t.val);
p.next = new ListNode(v);
p.next.next = t;
p = t;
}
return head;
}
int cal(int a, int b) {
while (b != 0) {
var t = a%b;
a = b;
b = t;
}
return a;
}
}