modify code

pull/6/head
algorithmzuo 5 years ago
parent 11a70b58ec
commit dc11e1605e

@ -243,9 +243,10 @@ public class Code01_InsertS2MakeMostAlphabeticalOrder {
} }
} }
System.out.println("功能测试结束"); System.out.println("功能测试结束");
System.out.println("=========="); System.out.println("==========");
System.out.println("性能测试开始");
System.out.println("性能测试开始");
int s1Len = 1000000; int s1Len = 1000000;
int s2Len = 500; int s2Len = 500;
String s1 = randomNumberString(s1Len, range); String s1 = randomNumberString(s1Len, range);

@ -12,6 +12,8 @@ public class Code02_CreateMaximumNumber {
int[] res = new int[k]; int[] res = new int[k];
int[][] dp1 = getdp(nums1); // 生成dp1这个表以后从nums1中只要固定拿N个数 int[][] dp1 = getdp(nums1); // 生成dp1这个表以后从nums1中只要固定拿N个数
int[][] dp2 = getdp(nums2); int[][] dp2 = getdp(nums2);
// get1 从arr1里拿的数量
// K - get1 从arr2里拿的数量
for (int get1 = Math.max(0, k - len2); get1 <= Math.min(k, len1); get1++) { for (int get1 = Math.max(0, k - len2); get1 <= Math.min(k, len1); get1++) {
// arr1 挑 get1个怎么得到一个最优结果 // arr1 挑 get1个怎么得到一个最优结果
int[] pick1 = maxPick(nums1, dp1, get1); int[] pick1 = maxPick(nums1, dp1, get1);
@ -223,7 +225,6 @@ public class Code02_CreateMaximumNumber {
int pick = arr.length + 1; // 1 ~ N int pick = arr.length + 1; // 1 ~ N
int[][] dp = new int[size][pick]; int[][] dp = new int[size][pick];
// get 不从0开始因为拿0个无意义 // get 不从0开始因为拿0个无意义
// get 1
for (int get = 1; get < pick; get++) { // 1 ~ N for (int get = 1; get < pick; get++) { // 1 ~ N
int maxIndex = size - get; int maxIndex = size - get;
// i~N-1 // i~N-1

@ -78,9 +78,9 @@ public class Code03_LongestCommonSubstringConquerByHeight {
int[] height = dc3.height; int[] height = dc3.height;
int ans = 0; int ans = 0;
for (int i = 1; i < n; i++) { for (int i = 1; i < n; i++) {
int up = sa[i - 1]; int Y = sa[i - 1];
int down = sa[i]; int X = sa[i];
if (Math.min(up, down) < N && Math.max(up, down) > N) { if (Math.min(X, Y) < N && Math.max(X, Y) > N) {
ans = Math.max(ans, height[i]); ans = Math.max(ans, height[i]);
} }
} }
@ -213,6 +213,7 @@ public class Code03_LongestCommonSubstringConquerByHeight {
private int[] height(int[] s) { private int[] height(int[] s) {
int n = s.length; int n = s.length;
int[] ans = new int[n]; int[] ans = new int[n];
// 依次求h[i] , k = 0
for (int i = 0, k = 0; i < n; ++i) { for (int i = 0, k = 0; i < n; ++i) {
if (rank[i] != 0) { if (rank[i] != 0) {
if (k > 0) { if (k > 0) {
@ -222,6 +223,7 @@ public class Code03_LongestCommonSubstringConquerByHeight {
while (i + k < n && j + k < n && s[i + k] == s[j + k]) { while (i + k < n && j + k < n && s[i + k] == s[j + k]) {
++k; ++k;
} }
// h[i] = k
ans[rank[i]] = k; ans[rank[i]] = k;
} }
} }

@ -1,10 +1,10 @@
package class45; package class47;
import java.util.LinkedList; import java.util.LinkedList;
// 给定一个数组arr和一个正数M // 给定一个数组arr和一个正数M
// 返回在子数组长度不大于M的情况下最大的子数组累加和 // 返回在子数组长度不大于M的情况下最大的子数组累加和
public class Code04_MaxSumLengthNoMore { public class Code03_MaxSumLengthNoMore {
// O(N^2)的解法,暴力解,用作对数器 // O(N^2)的解法,暴力解,用作对数器
public static int test(int[] arr, int M) { public static int test(int[] arr, int M) {
Loading…
Cancel
Save