Leetcode 2078. 两栋颜色不同且距离最远的房子(已解决)
街上有 n 栋房子整齐地排成一列,每栋房子都粉刷上了漂亮的颜色。给你一个下标从 0 开始且长度为 n 的整数数组 colors ,其中 colors[i] 表示第 i 栋房子的颜色。
返回 两栋 颜色 不同 房子之间的 最大 距离。
第 i 栋房子和第 j 栋房子之间的距离是 abs(i - j) ,其中 abs(x) 是 x 的绝对值。
示例 1:
输入:colors = [1,1,1,6,1,1,1] 输出:3 解释:上图中,颜色 1 标识成蓝色,颜色 6 标识成红色。 两栋颜色不同且距离最远的房子是房子 0 和房子 3 。 房子 0 的颜色是颜色 1 ,房子 3 的颜色是颜色 6 。两栋房子之间的距离是 abs(0 - 3) = 3 。 注意,房子 3 和房子 6 也可以产生最佳答案。
示例 2:
输入:colors = [1,8,3,8,3] 输出:4 解释:上图中,颜色 1 标识成蓝色,颜色 8 标识成黄色,颜色 3 标识成绿色。 两栋颜色不同且距离最远的房子是房子 0 和房子 4 。 房子 0 的颜色是颜色 1 ,房子 4 的颜色是颜色 3 。两栋房子之间的距离是 abs(0 - 4) = 4 。
示例 3:
输入:colors = [0,1] 输出:1 解释:两栋颜色不同且距离最远的房子是房子 0 和房子 1 。 房子 0 的颜色是颜色 0 ,房子 1 的颜色是颜色 1 。两栋房子之间的距离是 abs(0 - 1) = 1 。
提示:
- n == colors.length
- 2 <= n <= 100
- 0 <= colors[i] <= 100
- 生成的测试数据满足 至少 存在 2 栋颜色不同的房子
主要思路:双指针思路
以左边为核心,左边保持不动,右边递减
以右边未核心,左边递减
Code:
class Solution { public: int maxDistance(vector<int>& colors) { int maxlen=1; for(int i=0,j=colors.size()-1;i<j;i++) { if(colors[i]!=colors[j]) maxlen=max(j-i,maxlen); } for(int i=0,j=colors.size()-1;i<j;j--) { if(colors[i]!=colors[j]) maxlen=max(j-i,maxlen); } return maxlen; } };
分类:
C/C++
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理