From 740ac4a36a623f4f7d1a7d4208f9fc6cb7b712d2 Mon Sep 17 00:00:00 2001 From: kkunkka Date: Thu, 14 Dec 2023 18:42:45 +0800 Subject: [PATCH] kk --- .idea/misc.xml | 3 +- src/main/java/com/dota/ListNode.java | 18 ++++++ .../java/com/dota/arr/_2132/Solution.java | 60 +++++++++++++++++++ src/main/java/com/dota/arr/_807/Solution.java | 29 +++++++++ src/main/java/com/dota/math/Solution.java | 5 ++ .../java/com/dota/math/_1769/Solution.java | 32 ++++++++++ .../java/com/dota/math/_2807/Solution.java | 29 +++++++++ 7 files changed, 174 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/dota/ListNode.java create mode 100644 src/main/java/com/dota/arr/_2132/Solution.java create mode 100644 src/main/java/com/dota/arr/_807/Solution.java create mode 100644 src/main/java/com/dota/math/Solution.java create mode 100644 src/main/java/com/dota/math/_1769/Solution.java create mode 100644 src/main/java/com/dota/math/_2807/Solution.java diff --git a/.idea/misc.xml b/.idea/misc.xml index a855768..17e9c2e 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - @@ -8,7 +7,7 @@ - + \ No newline at end of file diff --git a/src/main/java/com/dota/ListNode.java b/src/main/java/com/dota/ListNode.java new file mode 100644 index 0000000..fab685e --- /dev/null +++ b/src/main/java/com/dota/ListNode.java @@ -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; + } +} diff --git a/src/main/java/com/dota/arr/_2132/Solution.java b/src/main/java/com/dota/arr/_2132/Solution.java new file mode 100644 index 0000000..64d44d7 --- /dev/null +++ b/src/main/java/com/dota/arr/_2132/Solution.java @@ -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); + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/arr/_807/Solution.java b/src/main/java/com/dota/arr/_807/Solution.java new file mode 100644 index 0000000..8643827 --- /dev/null +++ b/src/main/java/com/dota/arr/_807/Solution.java @@ -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; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/math/Solution.java b/src/main/java/com/dota/math/Solution.java new file mode 100644 index 0000000..91f2479 --- /dev/null +++ b/src/main/java/com/dota/math/Solution.java @@ -0,0 +1,5 @@ +package com.dota.math; + +class Solution { + +} \ No newline at end of file diff --git a/src/main/java/com/dota/math/_1769/Solution.java b/src/main/java/com/dota/math/_1769/Solution.java new file mode 100644 index 0000000..5ff4677 --- /dev/null +++ b/src/main/java/com/dota/math/_1769/Solution.java @@ -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; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/math/_2807/Solution.java b/src/main/java/com/dota/math/_2807/Solution.java new file mode 100644 index 0000000..a25be62 --- /dev/null +++ b/src/main/java/com/dota/math/_2807/Solution.java @@ -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; + } +}