Rayman的绝顶之路——Leetcode每日一题打卡2
Leetcode56. 合并区间 题目:
给出一个区间的集合,请合并所有重叠的区间。
示例 1:
输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
示例 2:
输入: [[1,4],[4,5]]
输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。
我的思路:
- 首先给输入的二维数组按照第一个维度进行排序。
- 将区间进行合并输出,考虑多种情况,包括:单区间、两个区间不相交、多个区间相交等
我的AC代码如下:
import java.util.*;public class Leetcode56 {static int[][] merge(int[][] intervals) {if (intervals.length < 2) {return intervals;}//排序for (int i = 0; i < intervals.length; i++) {for (int j = i + 1; j < intervals.length; j++) {if (intervals[i][0] > intervals[j][0]) {int[] a;a = intervals[i];intervals[i] = intervals[j];intervals[j] = a;}}}List<int[]> list = new ArrayList<>();list.add(intervals[0]);for (int i = 1; i < intervals.length; i++) {int[] curInterval = intervals[i];// 每次新遍历到的列表与当前结果集中的最后一个区间的末尾端点进行比较int[] peek = list.get(list.size() - 1);if (curInterval[0] > peek[1]) {list.add(curInterval);} else {peek[1] = Math.max(curInterval[1], peek[1]);}}return list.toArray(new int[list.size()][]);}public static void main(String[] args) {int[][] a = {{1, 4},{0, 2},{3, 5}};int[][] res = merge(a);for (int i = 0; i < res.length; i++) {System.out.println(Arrays.toString(res[i]));}}
}
但是运行的速度略慢,所以我参考了官网上的解题思路对排序做了一下优化,改进后的代码如下:
import java.util.*;public class Leetcode56 {static int[][] merge(int[][] intervals) {if (intervals.length < 2) {return intervals;}//排序Arrays.sort(intervals, (v1, v2) -> v1[0] - v2[0]);List<int[]> list = new ArrayList<>();list.add(intervals[0]);for (int i = 1; i < intervals.length; i++) {int[] curInterval = intervals[i];// 每次新遍历到的列表与当前结果集中的最后一个区间的末尾端点进行比较int[] peek = list.get(list.size() - 1);if (curInterval[0] > peek[1]) {list.add(curInterval);} else {peek[1] = Math.max(curInterval[1], peek[1]);}}return list.toArray(new int[list.size()][]);}public static void main(String[] args) {int[][] a = {{1, 4},{0, 2},{3, 5}};int[][] res = merge(a);for (int i = 0; i < res.length; i++) {System.out.println(Arrays.toString(res[i]));}}
}
2020.4.16打卡
Rayman的绝顶之路——Leetcode每日一题打卡2相关推荐
- LeetCode每日一题打卡组队监督!刷题群!
近 2000 人已经加入共同刷题啦! 群友每天都会在群里给大家讲解算法题 每周日「负雪明烛」组织直播讲题 我相信来看我博客的大部分人都是通过LeetCode刷题过来的.最近发现LeetCode中文网站 ...
- 关于LeetCode每日一题打卡失败的感悟
背景 今年5月,报名参加了三叶姐的"五月打卡活动",押金29.9元,要求每天在力扣上每日一题打卡,完成则押金全退,完不成则押金不退. 事件 2022.5.10,LeetCode上的 ...
- Leetcode每日一题(914. 卡牌分组)
914. 卡牌分组 题目: 给定一副牌,每张牌上都写着一个整数. 此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组: 每组都有 X 张牌. 组内所有的牌上都写着相同的整数 ...
- LeetCode 每日一题打卡:334.递增的三元子序列
题目 334.递增的三元子序列 题目大意 给你一个整数数组numsnumsnums ,判断这个数组中是否存在长度为333的递增子序列. 如果存在这样的三元组下标(i,j,k)(i, j, k)(i,j ...
- 【Leetcode 每日一题】514. 自由之路(BFS+优先队列)
Leetcode 每日一题 题目链接:514. 自由之路 难度: 困难 解题思路: 这道题乍一看,可以选择用动态规划或者BFS来求解.本文使用BFS来进行解答.注意到题中有一个最小的到路径.所以我们可 ...
- leetcode每日刷题计划-简单篇day8
leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...
- Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)
思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...
- 【LeetCode每日一题】1723. 完成所有工作的最短时间
[LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...
- leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用
leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...
- LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色
LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...
最新文章
- phoenix 开发API系列(三)phoenix api 结合数据库
- 配置PIX515E DMZ的基本方法与故障排除
- CImage 载入缓存区图像数据
- python 百度地图可视化_Python调用百度地图
- qq企业邮箱登录服务器,腾讯邮箱登录入口(腾讯企业邮箱免费用户申请)
- SRAM and DRAM
- paddle——站在巨人肩膀上及背刺二三事
- 关于H5唤起地图导航小结
- 写一函数fac(n) 求n!。在主函数中输入a,b,c三个整数,实现求a!+b!+c!的值并输出。
- 学生成绩管理系统(一)
- SEO搜狗批量查询收录工具
- ios微信抓https包提示证书安全警告解决办法
- TCP/IP模型第二层--数据链路层
- DLL文件是什么?有几种调用方式?
- 塔防游戏c语言,塔防英雄游戏代码(原创C++实现)
- caffe Segnet 语义分割(一)
- Android LeakCanary
- vs2015 打包程序(摘抄自博客园-流浪阿丁)
- 鱼、美元和经济的故事
- 一、Linux必知学习资料