算法训练营day31,贪心算法5

news/2025/2/15 14:34:55/

package main

import (

  "fmt"

  "sort"

)

//435. 无重叠区间

func eraseOverlapIntervals(intervals [][]int) int {

  if len(intervals) == 0 {

    return 0

  }

  count := 0 //移除数量

  //按第一位从小到大排序

  sort.Slice(intervals, func(i, j int) bool {

    return intervals[i][0] < intervals[j][0]

  })

  for i := 1; i < len(intervals); i++ {

    //如果当前左边界比前一个右边界比小,说明重叠需要删除

    if intervals[i][0] < intervals[i-1][1] {

      count++

      if intervals[i][1] > intervals[i-1][1] {

        intervals[i][1] = intervals[i-1][1]

      }

    }

  }

  return count

}

//763. 划分字母区间

func partitionLabels(s string) []int {

  m1 := make(map[byte]int)

  for i := 0; i < len(s); i++ {

    m1[s[i]] = i

  }

  result := make([]int, 0)

  left, right := 0, 0

  for i := 0; i < len(s); i++ {

    if m1[s[i]] > right {

      right = m1[s[i]]

    }

    if i == right {

      result = append(result, right-left+1)

      left = i + 1

    }

  }

  return result

}

//56. 合并区间

func merge(intervals [][]int) [][]int {

  result := make([][]int, 0)

  sort.Slice(intervals, func(i, j int) bool {

    return intervals[i][0] < intervals[j][0]

  })

  result = append(result, intervals[0])

  for i := 1; i < len(intervals); i++ {

    //如果当前左边界比结果数组最后一个右边界比小,说明重叠

    if intervals[i][0] <= intervals[i-1][1] {

      if result[len(result)-1][1] < intervals[i][1] {

        result[len(result)-1][1] = intervals[i][1]

      }

    } else {

      result = append(result, intervals[i])

    }

  }

  return result

}


http://www.ppmy.cn/news/1357067.html

相关文章

【开源软件的影响力有多大?】

开源软件的影响力有多大 开源软件的影响力 开源软件的影响力 开源软件对现代技术和发展有着巨大的影响&#xff0c;开源软件指的是那些发布时附带源代码的软件&#xff0c;它们通常允许用户自由地使用、研究、修改和分享软件。以下是一些开源软件影响力的关键方面&#xff1a;…

基于注解管理bean

文章目录 一、标记与扫描1、标记2、扫描组件的beanName 二、自动装配三、纯注解开发模式1、创建配置类&#xff08;SpringConfig&#xff09;2、加载配置类3、测试加载第三方配置文件.properties使用Bean配置第三方Bean 四、bean的作用范围与生命周期管理 一、标记与扫描 1、标…

prometheus+mysql_exporter监控mysql

prometheusmysql_exporter监控mysql 一.安装mysql 1.下载&#xff1a;wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 2.安装客户端&#xff1a;yum -y install mysql57-community-release-el7-10.noarch.rpm 3.安装服务端&#xff1a;yum …

极狐GitLab 如何配置多个 LDAP?

本文仅适用于极狐GitLab私有化部署场景。 场景化痛点 极狐GitLab 的多 LDAP 接入功能解决了企业在以下场景中可能遇到的痛点&#xff1a; 多个组织/部门的整合&#xff1a;在大型企业或跨国公司中&#xff0c;往往存在多个组织或部门&#xff0c;它们可能拥有独立的 LDAP 服务…

C语言——从头开始——深入理解指针(1)

一.内存和地址 我们知道计算上CPU&#xff08;中央处理器&#xff09;在处理数据的时候&#xff0c;是通过地址总线把需要的数据从内存中读取的&#xff0c;后通过数据总线把处理后的数据放回内存中。如下图所示&#xff1a; 计算机把内存划分为⼀个个的内存单元&#xff0c;每…

【selenium】

selenium是一个Web的自动化测试工具&#xff0c;最初是为网站自动化测试而开发的。Selenium可以直接调用浏览器&#xff0c;它支持所有主流的浏览器。其本质是通过驱动浏览器&#xff0c;完成模拟浏览器操作&#xff0c;比如挑战&#xff0c;输入&#xff0c;点击等。 下载与打…

如何在CentOS安装SQL Server数据库并实现无公网ip环境远程连接

文章目录 前言1. 安装sql server2. 局域网测试连接3. 安装cpolar内网穿透4. 将sqlserver映射到公网5. 公网远程连接6.固定连接公网地址7.使用固定公网地址连接 前言 简单几步实现在Linux centos环境下安装部署sql server数据库&#xff0c;并结合cpolar内网穿透工具&#xff0…

LeetCode 算法题 (数组)存在连续3个奇数的数组

问题&#xff1a; 输入一个数组&#xff0c;并输入长度&#xff0c;判断数组中是否存在连续3个元素都是奇数的情况&#xff0c;如果存在返回存在连续3个元素都是奇数的情况&#xff0c;不存在返回不存在连续3个元素都是奇数的情况 例一&#xff1a; 输入&#xff1a;a[1,2,3…