leetcode2078 两栋颜色不同且距离最远的房子

一、题目描述

二、解题思路

(1)解法一

可以使用枚举的方法来解决这个问题,每次固定左边的位置,从右边开始枚举,直到到达数组尾部,枚举完所有的情况;

(2)解法二

通过观察我们可以知道,满足题意的位置一定与最左边的位置和最右边的位置有关(贪心):

<1>固定最左边的位置left1,right1从右往左遍历,第一个colorsleft1!=colorsright1,计算ret1=right1-left1;

<2>固定最右边的位置right2,left2从左往右遍历,第一个colorsleft2!=colorsright2,计算ret2=right2-left2;

<3>返回值ret=max(ret1,ret2);

三、代码实现

(1)解法一

cpp 复制代码
class Solution {
public:
    int maxDistance(vector<int>& colors) {
       //枚举
       int n=colors.size();
       int ret=0;
       for(int left=0;left!=n-1;left++)
            for(int right=n-1;right>left;right--){
                if(colors[left]!=colors[right])
                    ret=max(ret,right-left);
            }
        return ret;
    }
};

(2)解法二

cpp 复制代码
class Solution {
public:
    int maxDistance(vector<int>& colors) {
       //贪心
       //固定最左边
       int ret1=0;
       int left=0,right=colors.size()-1;
       while(colors[left]==colors[right]&&left<=right) right--;
       ret1=right-left;
       //固定最右边
       int ret2=0;
       left=0,right=colors.size()-1;
       while(colors[left]==colors[right]&&left<=right) left++;
       ret2=right-left;
       
       return max(ret1,ret2);
    }
};
相关推荐
fpcc1 小时前
c++编程实践—堆和栈越界调试
c++
yi0111 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
YangYang9YangYan2 小时前
2027 秋招|数据科学与大数据技术面试项目价值回答思路,告别纯代码描述
大数据·面试·职场和发展
weiabc3 小时前
MSYS2 UCRT64 + g++ C++ 中文输出乱码 完整全过程
c++
灯澜忆梦4 小时前
【面向对象编程C++】| 基础语法
java·c++·算法
禾小西4 小时前
Redis 数据结构:快速的 Redis 有哪些慢操作?
数据结构·数据库·redis
小蒋观天下4 小时前
专项方案:大场景港口AI安防、多干扰环境下的算法调优与落地实操
人工智能·深度学习·算法·安全·机器学习·计算机视觉·ai大模型
Evand J4 小时前
【电机滤波例程5】渐消因子自适应扩展卡尔曼滤波(EKF),MATLAB。PMSM负载突变下的状态估计。附下载链接
算法·matlab
H.莓飛4 小时前
【数据结构】二叉树_OJ题
linux·开发语言·数据结构·算法
好想像大佬一样能够ak所有5 小时前
Leetcode35.搜索插入位置
数据结构·算法·leetcode