1.网络延迟
力扣743
class Solution {
public int networkDelayTime(int[][] times, int n, int k) {
final int INF = Integer.MAX_VALUE/2; //下面有一步相加的内容,所以除2了
int[][] g = new int[n][n];
for (int i = 0; i < n; ++i) {
Arrays.fill(g[i], INF);
}
for (int[] t : times) {
int x = t[0] - 1, y = t[1] - 1;
g[x][y] = t[2];
}
// 前面的部分相当于先处理了times时间表,这里是我纠结的地方,不知道如何遍历给定的times
int[] dist = new int[n];
Arrays.fill(dist, INF);
dist[k - 1] = 0;
boolean[] used = new boolean[n];
for (int i = 0; i < n; ++i) {
int x = -1;
for (int y = 0; y < n; ++y) { //在1~n进行遍历,aq
if (!used[y] && (x == -1 || dist[y] < dist[x])) {
x = y; // 在没算过的岛里面找一个最小的
}
}
used[x] = true; //把这个岛标记为算过的,然后下面的for更新这个点到其他岛的值
for (int y = 0; y < n; ++y) {
dist[y] = Math.min(dist[y], dist[x] + g[x][y]);
}
}
int ans = Arrays.stream(dist).max().getAsInt();
return ans == INF ? -1 : ans;
}
}
2. 字符重新排序输出