kk
This commit is contained in:
3
.idea/misc.xml
generated
3
.idea/misc.xml
generated
@@ -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>
|
18
src/main/java/com/dota/ListNode.java
Normal file
18
src/main/java/com/dota/ListNode.java
Normal 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;
|
||||
}
|
||||
}
|
60
src/main/java/com/dota/arr/_2132/Solution.java
Normal file
60
src/main/java/com/dota/arr/_2132/Solution.java
Normal 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);
|
||||
}
|
||||
}
|
29
src/main/java/com/dota/arr/_807/Solution.java
Normal file
29
src/main/java/com/dota/arr/_807/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
5
src/main/java/com/dota/math/Solution.java
Normal file
5
src/main/java/com/dota/math/Solution.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package com.dota.math;
|
||||
|
||||
class Solution {
|
||||
|
||||
}
|
32
src/main/java/com/dota/math/_1769/Solution.java
Normal file
32
src/main/java/com/dota/math/_1769/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
29
src/main/java/com/dota/math/_2807/Solution.java
Normal file
29
src/main/java/com/dota/math/_2807/Solution.java
Normal 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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user