2078. 两栋颜色不同且距离最远的房子 力扣

题目描述:

街上有 n 栋房子整齐地排成一列,每栋房子都粉刷上了漂亮的颜色。给你一个下标从 0 开始且长度为 n 的整数数组 colors ,其中 colors[i] 表示第 i 栋房子的颜色。

返回 两栋 颜色 不同 房子之间的 最大 距离。

第 i 栋房子和第 j 栋房子之间的距离是 abs(i - j) ,其中 abs(x) 是 x 的绝对值。

题目链接:2078. 两栋颜色不同且距离最远的房子 - 力扣(LeetCode)

解题思路:

对于一种颜色来说,其他的颜色都是不同的。

比如 ***1*** , 8, 3, 8, ***3***

对于 '1' 这个颜色,就是 ***1*** , 0, 0, 0, 0,最大距离为4

对于'8' 这个颜色,就是 ***0*** , 8, 0, 0, 0,最大距离为3

对于'3' 这个颜色,就是 ***0*** , 0, 3, 0, ***3***,最大距离为4

所以只需要遍历O(n),查找从头开始与第一个元素不同的最远距离 比较 从尾开始与最后一个元素不同的最远距离,哪个更大即是答案。

代码如下:

cpp 复制代码
class Solution {
public:
    int maxDistance(vector<int>& colors) {
        int length = colors.size();
        int ans1 = 0;
        int ans2 = 0;
        for ( int i = 1; i < length; ++ i ){
            if ( colors[ 0 ] != colors[ i ] ){
                ans1 = i;
            }
        }
        -- length;
        for ( int i = length - 1; i >= 0; -- i ){
            if ( colors[ length ] != colors[ i ] ){
                ans2 = i;
            }
        }

        if ( ans1 ){
            return ans1 > length - ans2 ? ans1 : length - ans2;
        }else{
            return 0;
        }
    }
};
相关推荐
Tisfy1 小时前
LeetCode 2333.最小差值平方和:排序 + 数学计算(不用二分)
数学·算法·leetcode·题解·贪心·排序
aqiu1111111 小时前
【C++算法打怪专栏】LeetCode 217. 存在重复元素(解法总结)
c++·算法·leetcode
yi0112 小时前
DAY28: LeetCode 111. 二叉树的最小深度
人工智能·笔记·python·算法·leetcode·二叉树·递归
wuyk5553 小时前
27.LeetCode 2265. 统计值等于子树平均值的节点数 —— 后序遍历实战
stm32·单片机·嵌入式硬件·算法
xiangyun613 小时前
C++ list 模拟实现(二):const迭代器与反向迭代器,模板的黑魔法
开发语言·数据库·c++·算法·stl·list
xxwl5853 小时前
三、区域赛算法模版第三章---字符串相关算法
笔记·学习·算法
信奥卷王3 小时前
[GESP202509 六级] 划分字符串(含视频)
数据结构·算法
酒醉的胡铁3 小时前
相似度搜索的常见算法
算法·ai
局部有解3 小时前
Leetcode Hot100 - 最长连续序列
算法·leetcode·职场和发展
行者全栈架构师4 小时前
给开源 Rust 工具加一个新检查项,TRAE 帮我从想法跑到构建产物:全链路实战
前端·算法·架构