题目链接:2078. 两栋颜色不同且距离最远的房子(简单)
算法原理:
解法一:暴力枚举
2ms击败10.42%
时间复杂度O(N²)
思路很简单,逐个枚举每个元素,如果后续元素有与之不同的,就更新ret,结果取最大值
解法二:贪心
0ms击败100.00%
时间复杂度O(N)
其实我们要找最大距离的话,最直观的就是第一个位置和最后一个位置,因为第一个位置和最后一个位置的元素本身就是一个值
因此我们只需找到与第一个位置元素不同的下标 i 和与最后一个位置元素不同的下标 i 即可
答案=max( i , n-1-i)
JAVA代码:
class Solution { //解法一:暴力枚举 public int maxDistance(int[] colors) { int ret=0; for(int i=0;i<colors.length;i++) for(int j=i+1;j<colors.length;j++) if(colors[i]!=colors[j]) ret=Math.max(ret,j-i); return ret; } }class Solution { //解法二:贪心 public int maxDistance(int[] colors) { int ret=0,n=colors.length; for(int i=1;i<n;i++) if(colors[i]!=colors[0]) ret=i; for(int i=n-2;i>=0;i--) if(colors[i]!=colors[n-1]) ret=Math.max(ret,n-1-i); return ret; } }