5930. 兩棟顏色不同且距離最遠的房子
街上有 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 棟顏色不同的房子
解題思路
看到數據量,就想到使用樸素的解法,枚舉兩棟房子所有的可能選擇,計算所有顏色不同的房子的距離,找出兩棟顏色不同房子之間的最大距離。
代碼
class Solution {
public:int maxDistance(vector<int>& colors) {int res(0);for (int i = 0; i < colors.size(); ++i) {for (int j = 0; j < i; ++j) {if (colors[i]!=colors[j]){res=max(res,i-j);break;}}}return res;}
};