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;
        }
    }
};
相关推荐
目黑live +wacyltd6 分钟前
算法备案:常见驳回原因与应对策略
人工智能·算法
磊 子30 分钟前
多态类原理+四种类型转换+异常处理
开发语言·c++·算法
染指11102 小时前
3.AI大模型-token是什么-大模型底层运行机制
人工智能·算法·机器学习
谙弆悕博士2 小时前
快速学C语言——第19章:C语言常用开发库
c语言·开发语言·算法·业界资讯·常用函数
光影少年2 小时前
前端算法题
前端·javascript·算法
南宫萧幕2 小时前
基于 Simulink 与 Python 联合仿真的 eVTOL 强化学习全链路实战
开发语言·人工智能·python·算法·机器学习·控制
电魂泡哥2 小时前
CMS垃圾回收
java·jvm·算法
hkj88083 小时前
CRC-512算法输出64字节
算法
@我漫长的孤独流浪3 小时前
计算机系统核心概念与性能优化全解析
算法·计算机外设