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 。

思路一:不用多说,暴力两层for循环,找不同颜色的房子,取距离最远的。

代码(Python):

class Solution(object):
    def maxDistance(self, colors):
        result = 0
        for i in range(len(colors)-1):
            for j in range(i+1,len(colors)):
                if colors[i]!=colors[j]:
                    result = max(result,abs(j-i))
        return result

思路二:其实不难证明,颜色不同且距离最大的房子,其中的一个房子肯定在边界上。

假如共有5个房子,假设颜色不同且距离最大的房子出现在中间,那就说明边界的两个房子颜色相同,都记为颜色0,最大的若是第二个和第四个房子颜色不同,那这两个房子的颜色至少有一个和边界房子的颜色不同,可以自己举一些例子试试看,比如房子二是颜色1,房子四是颜色2,那这两个房子的距离没有房子二到房子五的距离大;再换个例子,比如房子二是颜色0,房子四是颜色1,那这两个房子的距离没有房子一到房子四的距离大;因此我们可以进行两次查找,第一次固定左边界,找右边出现的颜色不同且距离最大的;第二次固定右边界,找左边出现的颜色不同且距离最大的,最后取这两个距离的更大的值作为答案。

代码(Python):

class Solution(object):
    def maxDistance(self, colors):
        result1 = 0                  #保存从左往右找的最大距离
        result2 = 0                  #保存从右往左找的最大距离
        left = 0
        right = len(colors) - 1 
        while left <= right:
            if colors[left] != colors[right]:
                result1 = max(result1,abs(right-left))
                break
            else:
                left += 1
        left = 0
        right = len(colors) - 1   
        while left <= right:
            if colors[left] != colors[right]:
                result2 = max(result2,abs(right-left))
                break
            else:
                right -= 1
        return max(result1,result2)    #取更大的距离
 

相关推荐

  1. 2833.距离原点

    2024-06-16 01:50:03       35 阅读
  2. 「笔试刷题」:数组中个字符串距离

    2024-06-16 01:50:03       39 阅读
  3. 如何实现单片机与手机距离通信

    2024-06-16 01:50:03       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-16 01:50:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-16 01:50:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-16 01:50:03       87 阅读
  4. Python语言-面向对象

    2024-06-16 01:50:03       96 阅读

热门阅读

  1. 增量数据库同步软件PanguSync侵入式全面清理脚本

    2024-06-16 01:50:03       32 阅读
  2. LeetCode 596, 13, 2

    2024-06-16 01:50:03       34 阅读
  3. 【无标题】

    2024-06-16 01:50:03       25 阅读
  4. React Native 快速Demo(1)

    2024-06-16 01:50:03       35 阅读
  5. 【React】在 react 应用中,怎么使用useReducer

    2024-06-16 01:50:03       30 阅读
  6. 前端面试题日常练-day67 【面试题】

    2024-06-16 01:50:03       29 阅读
  7. IEEE会议论文LaTeX模板中添加页码

    2024-06-16 01:50:03       31 阅读
  8. C++之结构体初始化使用总结

    2024-06-16 01:50:03       32 阅读