【随想录】Day36—第八章 贪心算法 part05

server/2024/9/22 19:10:11/

目录

  • 题目1: 无重叠区间
    • 1- 思路
    • 2- 题解
      • ⭐ 无重叠区间——题解思路
  • 题目2: 763. 划分字母区间
    • 1- 思路
    • 2- 题解
      • ⭐ 划分字母区间——题解思路
  • 题目3: 56. 合并区间
    • 1- 思路
    • 2- 题解
      • ⭐ 合并区间——题解思路


题目1: 无重叠区间

  • 题目链接:435. 无重叠区间

1- 思路

贪心思路
贪心思路类似于,最少的弓箭射气球的场景

  • 通过遍历的方式,遍历区间
    1. 先根据区间的左侧值对区间进行排序
    1. 遍历区间
    • **重叠 **:如果当前遍历的区间与前一个区间重叠,此时修改 当前区间的右侧范围 为二者最小值
    • 不重叠:如果此时不重叠,对 res 结果进行 ++。

实际上这个与弓箭射气球所求的结果是相反的,弓箭射气球实际上求的是无重叠区间个数,因此本题目根据弓箭射气球的结果 使用 intervals 的长度减去 无重叠区间个数所得到的就是所求结果:即重叠区间个数。


2- 题解

⭐ 无重叠区间——题解思路

在这里插入图片描述

class Solution {public int eraseOverlapIntervals(int[][] intervals) {int res = 1;Arrays.sort(intervals,(o1,o2) -> Integer.compare(o1[0],o2[0]));for(int i = 1 ; i < intervals.length;i++){// 重叠if(intervals[i][0] < intervals[i-1][1]){intervals[i][1] = Math.min(intervals[i-1][1],intervals[i][1]);}else{res++;}}return intervals.length - res;}
}

题目2: 763. 划分字母区间

  • 题目链接:763. 划分字母区间

1- 思路

疑问

  • 如何定义一个状态来判断当前字母是否出现过?——> 哈希结构
    • 利用一个数据结构存储字符出现的最远下标位置
  • 如何保证当前状态的字母尽可能维持更长?
    • 利用最远下标位置遍历,遍历的过程保证该集合中的下标的最远遍历位置不超过当前字母的最远遍历位置

贪心思路

  • ① 记录每个元素的最远出现位置
    • 定义 int[] hash = new int[26] 哈希数组,从前向后遍历数组,将 hash 数组的值赋值为下标 i。
  • ② 遍历字符串,寻找分割点
    • 数据结构:定义 List<Integer> 收集结果
    • 数据结构:定义 leftright 为左右区间指针
    • 右边界取遍历的最大值,如果 **i== right** 证明收集到一个结果,此时收集结果

2- 题解

⭐ 划分字母区间——题解思路

在这里插入图片描述

class Solution {List<Integer> res = new ArrayList<>();public List<Integer> partitionLabels(String s) {// 遍历 S 初始化 下标数组int[] hash = new int[26];for(int i = 0 ; i < s.length();i++){hash[s.charAt(i)-'a'] = i;}int left = 0;int right = 0;for(int i =0  ; i < s.length();i++){// 遍历right = Math.max(right,hash[s.charAt(i)-'a']);// 结果if(right==i){res.add(right-left+1);left = right+1;}}return res;}
}

题目3: 56. 合并区间

  • 题目链接:56. 合并区间

1- 思路

疑问 && 难点

  • 如何记录合并后的区间? ——> 定义

贪心思路
类似于:弓箭引爆气球

    1. 对输入的区间根据左侧进行排序
    1. 遍历排序区间
    • 若重叠:此时更新 right 为最大值
    • 若不重叠:收集结果,更新 leftright

2- 题解

⭐ 合并区间——题解思路

在这里插入图片描述

class Solution {public int[][] merge(int[][] intervals) {Arrays.sort(intervals,(o1,o2) -> Integer.compare(o1[0],o2[0]));List<int[]> res = new ArrayList<>();int left = intervals[0][0];int right = intervals[0][1];for(int i = 1;i < intervals.length;i++){// 不重叠,收集结果if(intervals[i][0] > right){res.add(new int[]{left,right});left = intervals[i][0];right = intervals[i][1];}else{ //重叠:更新最大右边界        right = Math.max(right, intervals[i][1]);}}res.add(new int[]{left,right});return res.toArray(new int[res.size()][]);}
}


http://www.ppmy.cn/server/22544.html

相关文章

【AI大模型】Prompt Engineering 基础知识与挑战

前言 Prompt Engineering&#xff0c;即提示工程&#xff0c;是一种新兴的技术领域&#xff0c;它主要研究如何设计有效的提示&#xff08;Prompt&#xff09;来引导用户生成特定的输出。随着自然语言处理技术的快速发展&#xff0c;特别是预训练语言模型&#xff08;如 GPT-3…

基于EBAZ4205矿板的图像处理:01简介

基于EBAZ4205矿板的图像处理&#xff1a;01简介 最近入手了性价比超强的ebaz矿板&#xff0c;决定把之前掌握的知识融汇贯通&#xff0c;将各种图像处理算法部署其中&#xff0c;专门写这个帖子&#xff0c;也是想激励自己&#xff0c;所以&#xff0c;在此立贴为证&#xff0…

Halcon 3D 使用3D ROI截取模型

Halcon 3D 使用3D ROI截取模型 链接:https://pan.baidu.com/s/1UfFyZ6y-EFq9jy0T_DTJGA 提取码:ewdi * 1.读取图片 ****************

Day26: Redis入门、开发点赞功能、开发我收到的赞的功能、重构点赞功能、开发关注、取消关注、开发关注列表、粉丝列表、重构登录功能

Redis入门 简介 Redis是NoSQL数据库&#xff08;Not only SQL&#xff09;值支持多种数据结构&#xff08;key都是string&#xff09;&#xff1a;字符串、哈希、列表、集合、有序集合把数据存在内存中&#xff0c;速度惊人&#xff1b;同时也可以讲数据快照&#xff08;数据…

Python3-Cookbook(第九章) - 元编程Part3

一、捕获类的属性定义顺序 #!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2024-04-13 10:04 # Author : Maple # File : 14-捕获类的属性定义顺序.pyfrom collections import OrderedDict""" 你想自动记录一个类中属性和方法定义的顺序&…

光伏无人机巡检主要有些什么功能和特点?

随着科技的飞速发展&#xff0c;无人机技术已经渗透到多个行业领域&#xff0c;光伏产业便是其中之一。光伏无人机巡检&#xff0c;作为一种新兴的巡检方式&#xff0c;正在逐渐取代传统的人工巡检&#xff0c;为光伏电站的安全、高效运行提供了有力保障。那么&#xff0c;光伏…

Unity C#和安卓原生专题一 C#和Android Java交互

前言 C#和iOS Obj-C交互的方法&#xff0c;和Android交互也一样简单&#xff0c;主要是Unity提供了非常方便的辅助类&#xff0c;基本不需要和JNI打交道 一 、 C#中关于Android的几个基本概念 1.1 创建或获取类 第一种 new AndroidJavaClass()来创建 AndroidJavaClass jc …

采用前后端分离Vue,Ant-Design技术开发的(手麻系统成品源码)适用于三甲医院

开发环境 技术架构&#xff1a;前后端分离 开发语言&#xff1a;C#.net6.0 开发工具&#xff1a;vs2022,vscode 前端框架&#xff1a;Vue,Ant-Design 后端框架&#xff1a;百小僧开源框架 数 据 库&#xff1a;sqlserver2019 系统特性 麻zui、护理、PACU等围术期业务全覆…