Skip to content

Commit bf9ece3

Browse files
committed
Merge remote-tracking branch 'origin/main'
2 parents f71249e + 23931a3 commit bf9ece3

File tree

4 files changed

+151
-2
lines changed

4 files changed

+151
-2
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.gatsby;
2+
3+
/**
4+
* @author -- gatsby
5+
* @date -- 2022/7/22
6+
* @description -- leetcode 1529 最少的后缀翻转次数
7+
*/
8+
9+
10+
public class _1529MinimumSuffixFlips {
11+
public int minFlips(String target) {
12+
if (target.length() == 0) return 0;
13+
int count = 0;
14+
char base = target.charAt(0);
15+
if (base == '1') count++;
16+
for (int i = 1; i < target.length(); ++i) {
17+
if (target.charAt(i) != base) {
18+
count++;
19+
base = target.charAt(i);
20+
}
21+
}
22+
return count;
23+
}
24+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.gatsby;
2+
3+
import java.util.*;
4+
5+
/**
6+
* @author -- gatsby
7+
* @date -- 2022/7/9
8+
* @description -- 2171. 拿出最少数目的魔法豆
9+
*/
10+
11+
12+
public class _2171RemovingMinimumNumberOIfMagicBeans {
13+
public long minimumRemoval(int[] beans) {
14+
Arrays.sort(beans);
15+
long res = Integer.MAX_VALUE;
16+
long sum = 0;
17+
// Set<Integer> beanSet = new HashSet<>();
18+
for (int bean : beans) {
19+
sum += bean;
20+
// beanSet.add(bean);
21+
}
22+
int n = beans.length;
23+
// for (int bean: beanSet) {
24+
// res = Math.min(res, sum - ())
25+
// }
26+
for (int i = 0; i < n; ++i) {
27+
System.out.println(beans[i]);
28+
if (i != n - 1 && beans[i] == beans[i + 1]) continue;
29+
res = Math.min(res, sum - (long) beans[i] * (beans.length - i));
30+
}
31+
return res;
32+
}
33+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.gatsby.offerII;
2+
3+
/**
4+
* @author -- gatsby
5+
* @date -- 2022/7/16
6+
* @description -- 剑指 Offer II 099. 最小路径之和
7+
*/
8+
9+
10+
public class _99MinPathSum {
11+
public int minPathSum(int[][] grid) {
12+
int row = grid.length;
13+
int col = grid[0].length;
14+
if (row == 1) {
15+
int sum = 0;
16+
for (int i : grid[0]) {
17+
sum += i;
18+
}
19+
return sum;
20+
}
21+
22+
if (col == 1) {
23+
int sum = 0;
24+
for (int[] i : grid) {
25+
sum += i[0];
26+
}
27+
return sum;
28+
}
29+
30+
int[][] dp = new int[row][col];
31+
dp[0][0] = grid[0][0];
32+
for (int i = 1; i < row; ++i) {
33+
dp[i][0] = grid[i][0] + dp[i - 1][0];
34+
}
35+
for (int i = 1; i < col; ++i) {
36+
dp[0][i] = dp[0][i - 1] + grid[0][i];
37+
}
38+
39+
for (int i = 1; i < row; ++i) {
40+
for (int j = 1; j < col; ++j) {
41+
dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
42+
}
43+
}
44+
return dp[row - 1][col - 1];
45+
}
46+
}

src/com/gatsby/utils/SortUtil.java

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.gatsby.utils;
22

3+
import java.util.Arrays;
4+
35
/**
46
* @ClassName: SortUtil
57
* @Description: 排序类
@@ -8,13 +10,15 @@
810
*/
911

1012
public class SortUtil {
13+
static int[] tmp;
14+
1115
/**
12-
* @MethodName: quickSort
16+
* @MethodName: quickSort
1317
* @Parameter: [nums, begin, end]
1418
* @Return void
1519
* @Description: 快速排序
1620
* @author: Gatsby
17-
* @date: 2022/7/25 15:20
21+
* @date: 2022/7/25 15:20
1822
*/
1923
public static void quickSort(int[] nums, int begin, int end) {
2024
if (begin < end) {
@@ -43,6 +47,48 @@ public static void quickSort(int[] nums, int begin, int end) {
4347
quickSort(nums, j + 1, end);
4448
}
4549
}
50+
51+
52+
public static int[] mergeSort(int[] nums) {
53+
tmp = new int[nums.length];
54+
merge(nums, 0, nums.length - 1);
55+
return nums;
56+
}
57+
58+
private static void merge(int[] nums, int left, int right) {
59+
if (left >= right) return;
60+
61+
int mid = (right + left) >> 1;
62+
merge(nums, left, mid);
63+
merge(nums, mid + 1, right);
64+
65+
int i = left;
66+
// 如果数组只有一个那就不会操作了
67+
int j = mid + 1;
68+
int count = 0;
69+
while (i <= mid && j <= right) {
70+
if (nums[i] <= nums[j]) {
71+
tmp[count++] = nums[i++];
72+
} else {
73+
tmp[count++] = nums[j++];
74+
}
75+
}
76+
// System.out.println(Arrays.toString(tmp));
77+
if (i <= mid) {
78+
System.arraycopy(nums, i, tmp, count, mid - i + 1);
79+
}
80+
81+
if (j <= right) {
82+
System.arraycopy(nums, j, tmp, count, right - j + 1);
83+
}
84+
System.arraycopy(tmp, 0, nums, left, right - left + 1);
85+
}
86+
87+
public static void main(String[] args) {
88+
int[] nums = {6, 2, 5, 3, 8, 3, 1, 6, 3, 4};
89+
nums = mergeSort(nums);
90+
System.out.println(Arrays.toString(nums));
91+
}
4692
}
4793

4894

0 commit comments

Comments
 (0)