首页 > 其他分享 >代码随想录 day31|| 56 合并区间,738 单调递增数字,968 监控二叉树

代码随想录 day31|| 56 合并区间,738 单调递增数字,968 监控二叉树

时间:2024-08-16 10:50:22浏览次数:7  
标签:return int res 56 随想录 intervals 二叉树 func 区间

56 合并区间

func merge(intervals [][]int) [][]int {
	// 思路先排序,然后按照后一个左区间和前一个右区间进行对比判断是否重叠,重叠扩充右区间
	sort.Slice(intervals, func(i, j int) bool {
		if intervals[i][0] == intervals[j][0]{
			return intervals[i][1] < intervals[j][1]
		}
		return intervals[i][0] < intervals[j][0]
	})

	var res [][]int
	for i := 1; i < len(intervals); i++ {
		if intervals[i][0] <= intervals[i-1][1] {
			// 后面左边界对比前一个右边界,小于就是有重叠
			intervals[i][0] = min(intervals[i-1][0], intervals[i][0])
			intervals[i][1] = max(intervals[i-1][1], intervals[i][1])
		}else {
			// 如果不重叠,就将前一个元素加入返回值
			res = append(res, intervals[i-1])
		}
	}
	res = append(res, intervals[len(intervals) - 1])
	return res
}
func max(x, y int) int {
	if x > y {
		return x
	}
	return y
}
func min(x, y int )int {
	if x < y {
		return x
	}
	return y
}

func merge(intervals [][]int) [][]int {
	// 思路先排序,然后按照后一个左区间和前一个右区间进行对比判断是否重叠,重叠扩充右区间
	sort.Slice(intervals, func(i, j int) bool {
		if intervals[i][0] == intervals[j][0]{
			return intervals[i][1] < intervals[j][1]
		}
		return intervals[i][0] < intervals[j][0]
	})

	var res [][]int
	res = append(res, intervals[0])
	for i := 1; i < len(intervals); i++ {
		if intervals[i][0] <= res[len(res) - 1][1] {
			// 后面左边界对比结果集中的合并区间小,小于就是有重叠
			res[len(res) - 1][0] = min(res[len(res) - 1][0], intervals[i][0])
			res[len(res) - 1][1] = max(res[len(res) - 1][1], intervals[i][1])
		}else {
			// 如果不重叠,就将前一个元素加入返回值
			res = append(res, intervals[i])
		}
	}
	return res
}

// 直接在结果集上面操作

738 单调递增数字

func monotoneIncreasingDigits(n int) int {
	// 思路,操作办法,从后往前遍历,如果新的数字大于之前数字,那么新数字-1. 后面数字都变成9
	if n <= 9 {
		return n
	}


	var res []int
	var next, cur int
	next = n % 10 // 初始化最后一位
	n = n / 10
	res = append([]int{next}, res...)
	for n != 0 {
		cur = n % 10
		if cur > next {
			fill(res)
			cur--
			res = append([]int{cur}, res...)
		}else{
			res = append([]int{cur}, res...)
		}
		next = cur
		n = n / 10
	}
	fmt.Println(res)
	var mix int
	for _, v := range res {
		mix = mix * 10 + v
	}

	return mix
}

func fill(nums []int) {
	for idx, _ := range nums{
		nums[idx] = 9
	}
}

968 监控二叉树

待定

标签:return,int,res,56,随想录,intervals,二叉树,func,区间
From: https://www.cnblogs.com/zhougongjin55/p/18362452

相关文章

  • 「代码随想录算法训练营」第三十九天 | 动态规划 part12
    115.不同的子序列题目链接:https://leetcode.cn/problems/distinct-subsequences/文章讲解:https://programmercarl.com/0115.不同的子序列.html题目难度:困难视频讲解:https://www.bilibili.com/video/BV1fG4y1m75Q/题目状态:看题解思路:动态规划数组初始化创建一个二维动......
  • 【数据结构】关于树(二叉树)的基础理论知识,你知道吗???
    前言:......
  • 代码随想录Day16
    513.找树左下角的值给定一个二叉树的根节点root,请找出该二叉树的最底层最左边节点的值。假设二叉树中至少有一个节点。示例1:输入:root=[2,1,3]输出:1示例2:输入:[1,2,3,4,null,5,6,null,null,7]输出:7提示:二叉树的节点个数的范围是[1,104]-231<=......
  • 【代码随想录】一、数组:6.前缀和
    二刷的时候发现更新了一些新的题目,尝试写了写后,发现我完全不会ACM输入输出模式。这两天在补前几天没背的八股,写得不够满意(几乎是完全誊代码了),先放着,后面再补充补充吧。1.题目:44.开发商购买土地#include<iostream>#include<vector>#include<climits>usingnamespacestd......
  • 【代码随想录】一、数组:4.滑动窗口
    1.题目1:209.长度最小的子数组1.1.解法1:暴力解法(已超时)使用两层循环,外层循环确定最小子数组开始的位置(i),内层循环确定最小子数组结束的位置(j)。在每次跳出内层循环时,sum应重置为0。当找到的子数组相加的和等于或大于目标值(target)时,算出此刻子数组的长度(j-i+1),并更新result的值......
  • 【代码随想录】一、数组:5.螺旋矩阵
    本题并不涉及到什么算法,就是模拟过程,但却十分考察对代码的掌控能力。1.题目1:59.螺旋矩阵II1.1.解法1:模拟本题的重点还是像之前的“704.二分查找”,坚持循环不变量原则,即在本题中遍历每条边时,坚持相同的原则。如下是一个示例,即n=5,我们考虑根据圈数和边数来进行遍历:由外圈到内......
  • 二叉树遍历
    二叉树的遍历是二叉树操作中的一个基本且重要的概念,它指的是按照一定的规则访问二叉树中的每个节点,并且每个节点仅被访问一次。常见的二叉树遍历方式有四种:前序遍历(Pre-orderTraversal)、中序遍历(In-orderTraversal)、后序遍历(Post-orderTraversal)和层序遍历(Level-orderTrave......
  • 代码随想录算法训练营 | 动态规划 part01
    509.斐波那契数509.斐波那契数状态转移方程:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2),其中n>1递归,太多重复计算classSolution{public:intfib(intn){if(n==0||n==1){returnn;}returnfib(n-1)......
  • 代码随想录算法训练营第一天 | 704. 二分查找,27. 移除元素
     704.二分查找题目链接:https://leetcode.cn/problems/binary-search/1,左闭右闭publicintsearch(int[]nums,inttarget){intlow=0;inthigh=nums.length-1;while(low<=high){intmid=(high+low)/2;if(num......
  • 打卡信奥刷题(563)用Scratch图形化工具信奥B2078[普及组/提高] 含 k 个 3 的数
    含k个3的数题目描述输入两个正整数mmm和kkk,其中......