modify code

master
algorithmzuo 10 months ago
parent 6679ad61f7
commit d558a8cb3e

@ -19,7 +19,7 @@ public class Code05_ShellSort {
// 然后再来到每个数每次跳1步往前交换直到往前1步的数<=当前的数,停止 // 然后再来到每个数每次跳1步往前交换直到往前1步的数<=当前的数,停止
int[] step = { 5, 2, 1 }; int[] step = { 5, 2, 1 };
for (int s = 0; s < step.length; s++) { for (int s = 0; s < step.length; s++) {
for (int i = 0; i < arr.length; i++) { for (int i = step[s]; i < arr.length; i++) {
for (int j = i - step[s]; j >= 0 && arr[j] > arr[j + step[s]]; j -= step[s]) { for (int j = i - step[s]; j >= 0 && arr[j] > arr[j + step[s]]; j -= step[s]) {
swap(arr, j, j + step[s]); swap(arr, j, j + step[s]);
} }

@ -26,7 +26,7 @@ public class Code03_MaxMeetingScore {
int time = 0; int time = 0;
int ans = 0; int ans = 0;
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
if (time + 10 <= path[i][0]) { if (time <= path[i][0]) {
ans += path[i][1]; ans += path[i][1];
time += 10; time += 10;
} else { } else {
@ -49,7 +49,7 @@ public class Code03_MaxMeetingScore {
// 已经把所有会议,按照截止时间,从小到大,排序了! // 已经把所有会议,按照截止时间,从小到大,排序了!
// 截止时间一样的,谁排前谁排后,无所谓 // 截止时间一样的,谁排前谁排后,无所谓
for (int i = 0; i < meetings.length; i++) { for (int i = 0; i < meetings.length; i++) {
if (time + 10 <= meetings[i][0]) { if (time <= meetings[i][0]) {
heap.add(meetings[i][1]); heap.add(meetings[i][1]);
time += 10; time += 10;
} else { } else {

@ -3,15 +3,12 @@ package class_2022_01_3_week;
import java.util.PriorityQueue; import java.util.PriorityQueue;
// A*算法 // A*算法
// 过程和Dijskra高度相处 // 过程和Dijskra高度相似增加了到终点的预估函数
// 有到终点的预估函数 // 只要预估值 <= 客观上最优距离,就是对的
// 只要预估值<=客观上最优距离,就是对的
// 预估函数是一种吸引力: // 预估函数是一种吸引力:
// 1合适的吸引力可以提升算法的速度 // 1合适的吸引力可以提升算法的速度
// 2吸引力“过强”会出现错误 // 2吸引力“过强”会出现错误
// 讲述A*算法
// 预估终点距离选择曼哈顿距离 // 预估终点距离选择曼哈顿距离
// 要求先在体系学习班图的章节听过"Dijkstra算法"
public class Code01_AStarAlgorithm { public class Code01_AStarAlgorithm {
// Dijkstra算法 // Dijkstra算法
@ -67,8 +64,6 @@ public class Code01_AStarAlgorithm {
} }
int n = map.length; int n = map.length;
int m = map[0].length; int m = map[0].length;
// [20,1,7]
// [20,?,1,7]
PriorityQueue<int[]> heap = new PriorityQueue<>((a, b) -> (a[0] + a[1]) - (b[0] + b[1])); PriorityQueue<int[]> heap = new PriorityQueue<>((a, b) -> (a[0] + a[1]) - (b[0] + b[1]));
boolean[][] closed = new boolean[n][m]; boolean[][] closed = new boolean[n][m];
heap.add(new int[] { map[startX][startY], distance(startX, startY, targetX, targetY), startX, startY }); heap.add(new int[] { map[startX][startY], distance(startX, startY, targetX, targetY), startX, startY });

@ -2,7 +2,6 @@ package class_2022_10_2_week;
import java.util.PriorityQueue; import java.util.PriorityQueue;
// 来自华为
// 给定一个N*M的二维矩阵只由字符'O'、'X'、'S'、'E'组成 // 给定一个N*M的二维矩阵只由字符'O'、'X'、'S'、'E'组成
// 'O'表示这个地方是可通行的平地 // 'O'表示这个地方是可通行的平地
// 'X'表示这个地方是不可通行的障碍 // 'X'表示这个地方是不可通行的障碍
@ -17,6 +16,7 @@ import java.util.PriorityQueue;
// 1 <= N,M <= 1000 // 1 <= N,M <= 1000
// 1 <= a,b <= 100000 // 1 <= a,b <= 100000
// 只会有一个士兵、一个敌人 // 只会有一个士兵、一个敌人
// 没有测试链接,对数器验证
public class Code05_SoldierFindEnemy { public class Code05_SoldierFindEnemy {
// 暴力dfs // 暴力dfs

@ -15,7 +15,7 @@ import java.util.HashMap;
// 2 <= n <= 10^6 // 2 <= n <= 10^6
// -10000 <= arr[i] <= 10000 // -10000 <= arr[i] <= 10000
// 1 <= T <= 10^8 // 1 <= T <= 10^8
// 都能时间复杂度做到O(N) // 都能时间复杂度做到O(N)
public class Code04_TowSubArrayMinLengthBothSumT { public class Code04_TowSubArrayMinLengthBothSumT {

Loading…
Cancel
Save