贪心算法-点灯问题

1、题目描述

给定一个字符串str,只由 'X' 和 '.' 两种字符构成。'X' 表示墙,不能放灯,点亮不点亮都可;'.' 表示居民点,可以放灯,需要点亮。如果灯放在i位置,可以让 i-1,i 和 i+1 三个位置被点亮。返回如果点亮str中所有需要点亮的位置,至少需要几盏灯。

2、解题思路

这题我们可以用谈心思想 分情况来去讨论:

(1)i 位置是 'X',不管,来到 i + 1位置

(2)i 位置是 '.' ,i + 1是 'X',i 位置需要放灯,来到 i + 2位置

(3)i 位置是 '.' ,i + 1是 '.',i + 2是 '.',i + 1 位置需要放灯,来到 i + 3位置(此步即是贪心)

(4)i 位置是 '.' ,i + 1是 '.',i + 2是 'X',i 或 i + 1 位置需要放灯,来到 i + 3位置

代码实现:

java 复制代码
	public static int minLight2(String road) {
		char[] str = road.toCharArray();
		int i = 0;
		int light = 0;
		while (i < str.length) {
			if (str[i] == 'X') {
				i++;
			} else {
				light++;
				if (i + 1 == str.length) {
					break;
				} else { // 有i位置 i+ 1 X .
					if (str[i + 1] == 'X') {
						i = i + 2;
					} else {
						i = i + 3;
					}
				}
			}
		}
		return light;
	}
相关推荐
VT.馒头3 分钟前
【力扣】2727. 判断对象是否为空
javascript·数据结构·算法·leetcode·职场和发展
goodluckyaa13 分钟前
LCR 006. 两数之和 II - 输入有序数组
算法
孤狼warrior14 分钟前
YOLO目标检测 一千字解析yolo最初的摸样 模型下载,数据集构建及模型训练代码
人工智能·python·深度学习·算法·yolo·目标检测·目标跟踪
Σίσυφος190038 分钟前
PCL法向量估计 之 RANSAC 平面估计法向量
算法·机器学习·平面
xhbaitxl43 分钟前
算法学习day39-动态规划
学习·算法·动态规划
I_LPL1 小时前
day23 代码随想录算法训练营 回溯专题2
算法·hot100·回溯算法·求职面试
智者知已应修善业1 小时前
【洛谷P9975奶牛被病毒传染最少数量推导,导出多样例】2025-2-26
c语言·c++·经验分享·笔记·算法·推荐算法
m0_736919101 小时前
C++中的委托构造函数
开发语言·c++·算法
小小小小王王王1 小时前
洛谷-P1886 【模板】单调队列 / 滑动窗口
c++·算法
PPPPPaPeR.2 小时前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法