LeetCode简单题之两栋颜色不同且距离最远的房子
題目
街上有 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 棟顏色不同的房子
來源:力扣(LeetCode)
解題思路
??首先求出有多少種不同的顏色來,然后從正面遍歷尋找這個顏色的位置,接著從尾巴遍歷尋找與這個顏色不同的顏色的第一個位置,這應該就是顏色1到顏色2的最大距離。
class Solution:def maxDistance(self, colors: List[int]) -> int:color=set(colors)MAX=0for i in color:for j in range(len(colors)):if i==colors[j]:breakfor k in range(len(colors)-1,-1,-1):if colors[k]!=i:breakif k-j>MAX:MAX=k-jreturn MAX
總結
以上是生活随笔為你收集整理的LeetCode简单题之两栋颜色不同且距离最远的房子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之用栈操作构建数组
- 下一篇: LeetCode简单题之生成每种字符都是