leetcode-2078-easy
思路一:分别用两个 map 记录最大值和最小值,然后遍历这两个 map 求得最大距离
public int maxDistance(int[] colors) {
Map<Integer, Integer> min = new HashMap<>();
Map<Integer, Integer> max = new HashMap<>();
for (int i = colors.length - 1; i >= 0; i--) {
min.put(colors[i], i);
}
for (int i = 0; i < colors.length; i++) {
max.put(colors[i], i);
}
int result = 0;
for (Map.Entry<Integer, Integer> e1 : min.entrySet()) {
for (Map.Entry<Integer, Integer> e2 : max.entrySet()) {
if (e1.getKey().equals(e2.getKey())) {
continue;
}
result = Math.max(result, e2.getValue() - e1.getValue());
}
}
return result;
}
思路二:更巧妙的解法,距离 D = | L - R |,解一定只有三种情况
- L = 0
- R = length - 1
- L = 0 && R = length - 1
也就是数组的端点一定会是最小值或者最大值
public int maxDistance(int[] colors) {
int result = 0;
int left = colors[0];
for (int i = 1; i < colors.length; i++) {
if (colors[i] != left) {
result = i;
}
}
int right = colors[colors.length - 1];
for (int i = colors.length - 2; i >= 0; i--) {
if (colors[i] != right) {
result = Math.max(colors.length - 1 - i, result);
}
}
return result;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具