diff --git "a/ACWing/src/DFS/floodfill/\345\261\261\345\263\260\345\222\214\345\261\261\350\260\267.java" "b/ACWing/src/DFS/floodfill/\345\261\261\345\263\260\345\222\214\345\261\261\350\260\267.java" index 5a49ad6d2d1ea6456989be00b3950591343b4047..c017199a723108609cf09c8bc9587d72221c5637 100644 --- "a/ACWing/src/DFS/floodfill/\345\261\261\345\263\260\345\222\214\345\261\261\350\260\267.java" +++ "b/ACWing/src/DFS/floodfill/\345\261\261\345\263\260\345\222\214\345\261\261\350\260\267.java" @@ -54,8 +54,8 @@ public class 山峰和山谷 { if (g[a][b] > g[x][y]) High = true; else if (g[a][b] < g[x][y]) low = true; } else if (!vis[a][b]) { - //显然这一步最重要,进入队列的都是满足未访问过该节点且与拓展之前的节点值相同 - //则显然,一遍bfs会把一个连通块权值相同的连通块都遍历到 + //这一步最重要,进入队列的都是满足未访问过该节点且与拓展之前的节点值相同 + //一遍bfs会把一个连通块权值相同的连通块都遍历到 q.add(a * n + b); } } diff --git "a/ACWing/src/IO\345\212\240\351\200\237.java" "b/ACWing/src/IO\345\212\240\351\200\237.java" index 9569f47a3c1f38b4f14f057a018162e72ad26ba5..6be03e4c28acdb940f6bf1465a7a8d9932defb83 100644 --- "a/ACWing/src/IO\345\212\240\351\200\237.java" +++ "b/ACWing/src/IO\345\212\240\351\200\237.java" @@ -30,7 +30,8 @@ public class IO加速 { public static void main(String[] args) throws IOException { // fff(); - sw(); + // sw(); + dfs(4, 1, new ArrayList()); // f(); // tokenizer = new StringTokenizer("123123 15412 4312412"); // System.out.println(tokenizer.nextToken()); @@ -66,9 +67,25 @@ public class IO加速 { System.out.println((t - s) / 1e8); } + static void dfs(int sum, int n, ArrayList q) { + if (sum == 0) { + System.out.println(q); + return; + } + System.out.println(q + " " + n); + for (int i = n; i < sum; i++) { + if (sum - i >= 0) { + q.add(i); + dfs(sum - i, i, q); + q.remove(q.size() - 1); + } + } + } + static void sw() { - long s = System.nanoTime(); for (int i = 0; i < par.length; i++) { + long s = System.nanoTime(); + for (int i = 0; i < par.length; i++) { par[i] = i; } for (int i = 0; i < par.length; i++) { @@ -77,7 +94,8 @@ public class IO加速 { long t = System.nanoTime(); System.out.println((t - s) / 1e8); - s = System.nanoTime(); for (int i = 0; i < par.length; i++) { + s = System.nanoTime(); + for (int i = 0; i < par.length; i++) { par[i] = i; } for (int i = 0; i < par.length; i++) { diff --git "a/ACWing/src/basic/two/\344\272\214\345\210\206\345\274\200\346\226\271.java" "b/ACWing/src/basic/two/\344\272\214\345\210\206\345\274\200\346\226\271.java" index 7e6756eed4252dfac28beacc73cc29bd7ccb2d95..767a43ca65fdc0d0bcc373a7392f526728a33273 100644 --- "a/ACWing/src/basic/two/\344\272\214\345\210\206\345\274\200\346\226\271.java" +++ "b/ACWing/src/basic/two/\344\272\214\345\210\206\345\274\200\346\226\271.java" @@ -5,6 +5,7 @@ import java.util.Scanner; public class 二分开方 { public static void main(String[] args) { + dk(new BigDecimal(1233L)); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); double l = 0, r = n; diff --git "a/ACWing/src/dp/\345\214\272\351\227\264dp/\347\237\263\345\255\220\345\220\210\345\271\266.java" "b/ACWing/src/dp/\345\214\272\351\227\264dp/\347\237\263\345\255\220\345\220\210\345\271\266.java" index f05524bd5653ff28653f1fb4a4737606ad907552..c52ead1b086f2d1d796888b4ab8af405738316ed 100644 --- "a/ACWing/src/dp/\345\214\272\351\227\264dp/\347\237\263\345\255\220\345\220\210\345\271\266.java" +++ "b/ACWing/src/dp/\345\214\272\351\227\264dp/\347\237\263\345\255\220\345\220\210\345\271\266.java" @@ -55,11 +55,11 @@ public class 石子合并 { //要先更新小区间的答案,按照拓扑序 for (int len = 2; len <= n; len++) { - for (int i = 1; i + len - 1 <= n; i++) { - int j = i + len - 1; - f[i][j] = (int) 1e9; - for (int k = i; k < j; k++) { - f[i][j] = Math.min(f[i][j], f[i][k] + f[k + 1][j] + s[j] - s[i - 1]); + for (int l = 1; l + len - 1 <= n; l++) { + int r = l + len - 1; + f[l][r] = (int) 1e9; + for (int k = l; k < r; k++) { + f[l][r] = Math.min(f[l][r], f[l][k] + f[k + 1][r] + s[r] - s[l - 1]); } } } @@ -70,7 +70,7 @@ public class 石子合并 { static int dfs(int i, int j) { if (i == j) return 0; if (dp[i][j] != -1) return dp[i][j]; - int ans = (int) 1e9; + int ans = Integer.MAX_VALUE / 2; for (int k = i; k < j; k++) { ans = Math.min(ans, dfs(i, k) + dfs(k + 1, j) + s[j] - s[i - 1]); } diff --git "a/ACWing/src/dp/\345\214\272\351\227\264dp/\350\203\275\351\207\217\351\241\271\351\223\276.java" "b/ACWing/src/dp/\345\214\272\351\227\264dp/\350\203\275\351\207\217\351\241\271\351\223\276.java" index 2a29fc4d7f09abbf5e2ede18bb493419f5206af7..dc0bdfdbe73f12a446958657899831da83be9984 100644 --- "a/ACWing/src/dp/\345\214\272\351\227\264dp/\350\203\275\351\207\217\351\241\271\351\223\276.java" +++ "b/ACWing/src/dp/\345\214\272\351\227\264dp/\350\203\275\351\207\217\351\241\271\351\223\276.java" @@ -3,7 +3,22 @@ package dp.区间dp; import java.util.Scanner; /** - * + * https://blog.csdn.net/qq_30277239/article/details/104377152 + * 环形dp,环展开成链求解 + * 状态表示f[L,R]{ + * 集合:所有将[L,R]合并到一起的矩阵的方式 + * 属性:Max + * 状态计算: + * }状态划分:{ + * 考虑最后的不同点:分界线 + * 分成若干个子集: + * L+1,L+2...R-2,R-1; + * 考虑第k个分界线 + * (L,K)(K,R)+cost + * 使得上式最大,f[L,K]+f[K,R]+w[i]*w[k]*w[r] + * } + * f[1,n]即为答案 + * 环展开为链 */ public class 能量项链 { public static void main(String[] args) { @@ -13,22 +28,14 @@ public class 能量项链 { a[i] = sc.nextInt(); a[i + n] = a[i]; } - for (int len = 3; len <= n + 1; len++) {//枚举长度 - for (int l = 1; l + len - 1 <= n * 2; l++) { + for (int len = 3; len <= n + 1; len++) {//枚举长度,起码三个数才能表示2个矩阵,消掉中间那个数 + for (int l = 1; l + len - 1 <= n * 2; l++) {//枚举起点 int r = l + len - 1; - for (int k = l; k < r; k++) { + for (int k = l + 1; k < r; k++) {//枚举分界线 f[l][r] = Math.max(f[l][r], f[l][k] + f[k][r] + a[l] * a[r] * a[k]); } } } - for (int len = 1; len <= n + 1; len++) { - for (int l = 1; l + len - 1 <= n * 2; l++) { - int r = l + len - 1; - for (int k = l; k < r; k++) { - - } - } - } int res = 0; for (int i = 1; i <= n; i++) { res = Math.max(res, f[i][i + n]); diff --git "a/ACWing/src/dp/\347\272\277\346\200\247dp/POJ3486\347\224\265\350\204\221.java" "b/ACWing/src/dp/\347\272\277\346\200\247dp/POJ3486\347\224\265\350\204\221.java" new file mode 100644 index 0000000000000000000000000000000000000000..9d08eee3f0f0fd1f246f73ad86b7ac7b708a3e89 --- /dev/null +++ "b/ACWing/src/dp/\347\272\277\346\200\247dp/POJ3486\347\224\265\350\204\221.java" @@ -0,0 +1,32 @@ +package dp.线性dp; + +import java.util.Arrays; +import java.util.Scanner; + +public class POJ3486电脑 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + n = sc.nextInt(); + c = sc.nextInt(); + + for (int i = 1; i <= n; i++) { + for (int j = i; j <= n; j++) { + m[i][j] = sc.nextInt(); + } + } + Arrays.fill(f, Integer.MAX_VALUE / 2); + f[0] = 0; + f[1] = m[1][1] + c; + for (int i = 2; i <= n; i++) { + for (int j = 1; j <= i; j++) { + f[i] = Math.min(f[i], f[j - 1] + m[j][i] + c); + } + System.out.println(f[i]); + } + System.out.println(f[n]); + } + + static int n, c; + static int[] f = new int[1000]; + static int[][] m = new int[1000][1000]; +} diff --git a/ACWing/src/graph/floyd.java b/ACWing/src/graph/floyd.java index df7289728768db1c9b34cac8a879d7ad14abcfed..11d64c014d397975a235b8e272dc37e97aab957b 100644 --- a/ACWing/src/graph/floyd.java +++ b/ACWing/src/graph/floyd.java @@ -40,32 +40,52 @@ import java.util.Scanner; public class floyd { public static void main(String[] args) { Scanner sc = new Scanner(System.in); - n = sc.nextInt(); - m = sc.nextInt(); - k = sc.nextInt(); - int x, y, z, t = Integer.MAX_VALUE / 2; - for (int i = 1; i <= n; i++) { - for (int j = 1; j <= n; j++) { - if (i == j) g[i][j] = 0; - else g[i][j] = t; +// n = sc.nextInt(); +// m = sc.nextInt(); +// k = sc.nextInt(); +// int x, y, z, t = Integer.MAX_VALUE / 2; +// for (int i = 1; i <= n; i++) { +// for (int j = 1; j <= n; j++) { +// if (i == j) g[i][j] = 0; +// else g[i][j] = t; +// } +// } +// for (int i = 0; i < m; i++) { +// x = sc.nextInt(); +// y = sc.nextInt(); +// z = sc.nextInt(); +// g[x][y] = Math.min(g[x][y], z); +// } + int[][] g = { + {8, 20, 32, 56, 54, 40}, + {20, 10, 48, 64, 34, 20}, + {32, 48, 8, 24, 54, 42}, + {56, 64, 24, 10, 30, 50}, + {54, 34, 54, 30, 6, 28}, + {40, 20, 42, 50, 28, 12}}; +// floyd(g); + for (int k = 0; k < 6; k++) { + for (int i = 0; i < 6; i++) { + for (int j = 0; j < 6; j++) { + g[i][j] = Math.min(g[i][k] + g[k][j], g[i][j]); + } } } - for (int i = 0; i < m; i++) { - x = sc.nextInt(); - y = sc.nextInt(); - z = sc.nextInt(); - g[x][y] = Math.min(g[x][y], z); - } - floyd(); - while (k-- != 0) { - x = sc.nextInt(); - y = sc.nextInt(); - if (g[x][y] > t / 2) System.out.println("Imposs"); - else System.out.println(g[x][y]); + for (int i = 0; i < 6; i++) { + for (int j = 0; j < 6; j++) { + System.out.print(g[i][j] + " "); + } + System.out.println(); } +// while (k-- != 0) { +// x = sc.nextInt(); +// y = sc.nextInt(); +// if (g[x][y] > t / 2) System.out.println("Imposs"); +// else System.out.println(g[x][y]); +// } } - static void floyd() { + static void floyd(int[][] g) { for (int k = 1; k <= n; k++) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { @@ -75,7 +95,7 @@ public class floyd { } } - static int n, m, k; + static int n = 5, m, k; - static int[][] g = new int[210][210]; + // static int[][] g = new int[210][210]; } diff --git "a/ACWing/src/\345\211\215\347\274\200\345\222\214\345\267\256\345\210\206/\347\246\273\346\225\243\345\214\226.java" "b/ACWing/src/\345\211\215\347\274\200\345\222\214\345\267\256\345\210\206/\347\246\273\346\225\243\345\214\226.java" index 813dac3a082ad93ac289481edb9611650fa8844e..c636d07c83ddc1f85ed84fc29c7e97168fd216f2 100644 --- "a/ACWing/src/\345\211\215\347\274\200\345\222\214\345\267\256\345\210\206/\347\246\273\346\225\243\345\214\226.java" +++ "b/ACWing/src/\345\211\215\347\274\200\345\222\214\345\267\256\345\210\206/\347\246\273\346\225\243\345\214\226.java" @@ -4,7 +4,7 @@ import java.util.TreeSet; /** * a[i] 1 3 100 200 50000 - * 0 1 2 3 4 + * 0 1 2 3 4 * 算出x离散化后的值,二分 * a[i]中应该去重有序 */ diff --git "a/ACWing/src/\346\225\260\345\255\246/\346\254\247\346\213\211\345\207\275\346\225\260.java" "b/ACWing/src/\346\225\260\345\255\246/\346\254\247\346\213\211\345\207\275\346\225\260.java" index 39593df1324dd2a2560f14216b20369341f128b9..642337663a9c47fa7c3059dbf6a063c6118e98fe 100644 --- "a/ACWing/src/\346\225\260\345\255\246/\346\254\247\346\213\211\345\207\275\346\225\260.java" +++ "b/ACWing/src/\346\225\260\345\255\246/\346\254\247\346\213\211\345\207\275\346\225\260.java" @@ -1,21 +1,22 @@ package 数学; + //https://blog.csdn.net/weixin_43237242/article/details/97388834 public class 欧拉函数 { public static void main(String[] args) { - System.out.println(euler(6)); + System.out.println(euler(12)); } static long euler(long n) { long ans = n; - for (int i = 2; i * i <= n; i++) { + for (int i = 2; i <= n / i; i++) { if (n % i == 0) { ans = ans / i * (i - 1); while (n % i == 0) { - n/=i; + n /= i; } } } - if (n>1)ans=ans/n*(n-1); + if (n > 1) ans = ans / n * (n - 1); return ans; } } diff --git "a/ACWing/src/\346\225\260\345\255\246/\347\272\277\346\200\247\347\255\233.java" "b/ACWing/src/\346\225\260\345\255\246/\347\272\277\346\200\247\347\255\233.java" index c79433aba8fbc38226a69189e47f94e0bb7677e6..12bc228217ab4c9eb2c56387ac6a0bbde8c5aab0 100644 --- "a/ACWing/src/\346\225\260\345\255\246/\347\272\277\346\200\247\347\255\233.java" +++ "b/ACWing/src/\346\225\260\345\255\246/\347\272\277\346\200\247\347\255\233.java" @@ -1,12 +1,14 @@ package 数学; +import java.util.Arrays; + //线性筛质数 //https://blog.csdn.net/qq_30277239/article/details/103687477 public class 线性筛 { public static void main(String[] args) { + ol(100); long s = System.nanoTime(); - - oldN(4234567); + oldN(3234567); long t = System.nanoTime(); System.out.println((t - s) / 1e9); } @@ -24,15 +26,39 @@ public class 线性筛 { if (i % prime[j] == 0) break; } } + System.out.println(Arrays.toString(prime)); + } + + static boolean isprimer(int x) { + if (x == 2) return true; + if (x < 2 || x % 2 == 0) return false; + int t = (int) Math.sqrt(x); + for (int i = 3; i <= t; i += 2) { + if (x % i == 0) return false; + } + return true; + } + + static void euler(int n) { + boolean[] vis = new boolean[n + 1]; + int cnt = 0; + int[] primer = new int[n + 1]; + for (int i = 2; i <= n; i++) { + if (!vis[i]) primer[cnt++] = i; + for (int j = 0; primer[j] <= n / i; j++) { + vis[primer[j] * i] = true; + if (i % primer[j] == 0) break; + } + } } //求第N个质数是多少 static void oldN(int N) { - int n = 6000000; + int n = (int) 1e7; int r = 0; while ((n / Math.log(n)) < N) { r++; - n += 5000; + n += 100000; } System.out.println(r); int cnt = 0; @@ -40,7 +66,8 @@ public class 线性筛 { vis = new boolean[n + 1]; for (int i = 2; i <= n; i++) { if (!vis[i]) prime[cnt++] = i; - for (int j = 0; prime[j] <= n / i; j++) { + r = n / i; + for (int j = 0; prime[j] <= r; j++) { vis[prime[j] * i] = true; if (i % prime[j] == 0) break; } diff --git "a/ACWing/src/\351\200\222\345\275\222/m\344\273\273\345\217\226n\346\273\241\350\266\263.java" "b/ACWing/src/\351\200\222\345\275\222/m\344\273\273\345\217\226n\346\273\241\350\266\263.java" index 6dbaf2443588f7c6aea0e0824e3d3009980b51a8..22962366f315b5d0e13a5265c3481398f75fa9f7 100644 --- "a/ACWing/src/\351\200\222\345\275\222/m\344\273\273\345\217\226n\346\273\241\350\266\263.java" +++ "b/ACWing/src/\351\200\222\345\275\222/m\344\273\273\345\217\226n\346\273\241\350\266\263.java" @@ -25,7 +25,6 @@ public class m任取n满足 { e = System.nanoTime(); System.out.println((e - a) / 1e8); - } static int ans, n = 30, k = 8, suma = 200; diff --git "a/LeetCode/src/P1002\350\277\207\346\262\263\345\215\222.java" "b/LeetCode/src/P1002\350\277\207\346\262\263\345\215\222.java" new file mode 100644 index 0000000000000000000000000000000000000000..9ed3550910d29d3b5177c15fc097b10cfeb4fead --- /dev/null +++ "b/LeetCode/src/P1002\350\277\207\346\262\263\345\215\222.java" @@ -0,0 +1,14 @@ +import java.util.Scanner; + +public class P1002过河卒 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + sx = sc.nextInt(); + sy = sc.nextInt(); + tx = sc.nextInt(); + ty = sc.nextInt(); + } + + static int[][] g = new int[30][30]; + static int sx, sy, tx, ty; +} diff --git "a/LeetCode/src/P1216\346\225\260\345\255\227\344\270\211\350\247\222\345\275\242.java" "b/LeetCode/src/P1216\346\225\260\345\255\227\344\270\211\350\247\222\345\275\242.java" new file mode 100644 index 0000000000000000000000000000000000000000..3844bf2cf4cbed1ecd94dd8a310b8f2c5d0eff75 --- /dev/null +++ "b/LeetCode/src/P1216\346\225\260\345\255\227\344\270\211\350\247\222\345\275\242.java" @@ -0,0 +1,39 @@ +import java.util.Arrays; +import java.util.Scanner; + +public class P1216数字三角形 { + public static void main(String[] args) { + f(); + Scanner sc = new Scanner(System.in); + n = sc.nextInt(); + for (int i = 1; i <= n; i++) { + for (int j = 1; j <= i; j++) { + g[i][j] = sc.nextInt(); + } + } + for (int i = n; i >= 1; i--) { + for (int j = n; j >= 1; j--) { + g[i][j] += Math.max(g[i + 1][j], g[i + 1][j + 1]); + } + } + System.out.println(g[1][1]); + } + + static void f() { + n = 9999; + boolean[] st = new boolean[99999]; + int[] pr = new int[9999]; + int cnt = 0; + for (int i = 2; i < 9999; i++) { + if (!st[i]) pr[cnt++] = i; + for (int j = 0; pr[j] <= n / i; j++) { + st[pr[j] * i] = true; + if (i % pr[j] == 0) break; + } + } + System.out.println(Arrays.toString(pr)); + } + + static int[][] g = new int[1010][1010]; + static int n; +} diff --git "a/LeetCode/src/P1434\346\273\221\351\233\252.java" "b/LeetCode/src/P1434\346\273\221\351\233\252.java" new file mode 100644 index 0000000000000000000000000000000000000000..eb8a2e138ab50797d7c4af7979b03bdfb605257c --- /dev/null +++ "b/LeetCode/src/P1434\346\273\221\351\233\252.java" @@ -0,0 +1,41 @@ +import java.util.Arrays; +import java.util.Scanner; + +public class P1434滑雪 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + n = sc.nextInt(); + m = sc.nextInt(); + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + g[i][j] = sc.nextInt(); + } + Arrays.fill(mem[i], 1); + } + int ans = 0; + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + ans = Math.max(dfs(i, j), ans); + } + } + System.out.println(ans); + } + + static int dfs(int i, int j) { + if (mem[i][j] > 1) return mem[i][j]; + for (int k = 0; k < 4; k++) { + int nx = dir[k][0] + i, ny = dir[k][1] + j; + if (nx >= 0 && nx < n && ny >= 0 && ny < m) + if (g[nx][ny] < g[i][j]) + mem[i][j] = Math.max(dfs(nx, ny) + 1, mem[i][j]); + } + return mem[i][j]; + } + + static int[][] dir = {{1, 0}, {0, 1}, {0, -1}, {-1, 0}}; + + static int[][] g = new int[110][110]; + static int[][] mem = new int[110][110]; + + static int n, m; +} diff --git "a/LeetCode/src/_152\344\271\230\347\247\257\346\234\200\345\244\247\345\255\220\345\272\217\345\210\227.java" "b/LeetCode/src/_152\344\271\230\347\247\257\346\234\200\345\244\247\345\255\220\345\272\217\345\210\227.java" index 7b1c9b92e6cdf363dfca670cc8931a8a38798b3a..970eaf798683ed19b652ecd97a4ec83dfb62c0c7 100644 --- "a/LeetCode/src/_152\344\271\230\347\247\257\346\234\200\345\244\247\345\255\220\345\272\217\345\210\227.java" +++ "b/LeetCode/src/_152\344\271\230\347\247\257\346\234\200\345\244\247\345\255\220\345\272\217\345\210\227.java" @@ -1,3 +1,54 @@ +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; + +/** + * + */ public class _152乘积最大子序列 { - + public static void main(String[] args) throws ScriptException { + dfs(0, 0, ""); + System.out.println(Calculation("1+3")); + } + + + static void dfs(int s, int state, String g) throws ScriptException { + if (s == 9) { + if (Calculation(g) == 1) { + System.out.println(g + "=1"); + } + return; + } + for (int i = 0; i <= 9; i++) { + if (((state >> i) & 1) != 1) { + state += 1 << i; + for (int j = 0; j < 4; j++) { + if (s == 8) { + String t = g; + dfs(s + 1, state, g + i); + g = t; + } else { + String t = g; + dfs(s + 1, state, g + i + op[j]); + g = t; + } + } + } + } + } + + static char[] op = {'+', '-', '*', '/'}; + + public static Double Calculation(String formula) { + Double result = null; //计算结果 + ScriptEngineManager manager = new ScriptEngineManager(); //创建一个ScriptEngineManager对象 + ScriptEngine engine = manager.getEngineByName("js"); //通过ScriptEngineManager获得ScriptEngine对象 + try { + result = (Double) engine.eval(formula); //用ScriptEngine的eval方法执行脚本 + } catch (ScriptException e) { + result = Double.NaN; + return result; + } + return result; + } } diff --git "a/LeetCode/src/_174\345\234\260\344\270\213\345\237\216\346\270\270\346\210\217.java" "b/LeetCode/src/_174\345\234\260\344\270\213\345\237\216\346\270\270\346\210\217.java" new file mode 100644 index 0000000000000000000000000000000000000000..49f525d73a3ef63247e9eae52019b18f9a9b792c --- /dev/null +++ "b/LeetCode/src/_174\345\234\260\344\270\213\345\237\216\346\270\270\346\210\217.java" @@ -0,0 +1,8 @@ +/** + * + */ +public class _174地下城游戏 { + public static void main(String[] args) { + + } +} diff --git "a/LeetCode/src/_670\346\234\200\345\244\247\344\272\244\346\215\242.java" "b/LeetCode/src/_670\346\234\200\345\244\247\344\272\244\346\215\242.java" new file mode 100644 index 0000000000000000000000000000000000000000..cb4e8f913c583314d48b798371cdd55e38a66106 --- /dev/null +++ "b/LeetCode/src/_670\346\234\200\345\244\247\344\272\244\346\215\242.java" @@ -0,0 +1,21 @@ +public class _670最大交换 { + public static void main(String[] args) { + + } + + //ac + public static int maximumSwap(int num) { + int res = num; + StringBuilder s = new StringBuilder().append(num); + for (int i = 0; i < s.length(); i++) { + for (int j = i + 1; j < s.length(); j++) { + s = new StringBuilder().append(num); + char t = s.charAt(i); + s.setCharAt(i, s.charAt(j)); + s.setCharAt(j, t); + res = Math.max(res, Integer.parseInt(s.toString())); + } + } + return res; + } +}