剑指 Offer II 075. 数组相对排序(中等 排序 数组)
剑指 Offer II 075. 数组相对排序
给定两个数组,arr1 和 arr2,
arr2 中的元素各不相同
arr2 中的每个元素都出现在 arr1 中
对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。
示例:
输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]
输出:[2,2,2,1,4,3,3,9,6,7,19]
提示:
1 <= arr1.length, arr2.length <= 1000
0 <= arr1[i], arr2[i] <= 1000
arr2 中的元素 arr2[i] 各不相同
arr2 中的每个元素 arr2[i] 都出现在 arr1 中
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/0H97ZC
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
分析
只要对数组按照每一对的第一个索引排序这道题就简单了,直接调用数组排序方法进行排序,需要写出排序方式。
在后面贴出了我第一次写的错误代码,最后的输出是3个[15, 18],也就是说每次list进行add的时候不仅会添加一个新的数组,还会用这个数组把之前的数组覆盖。从网上找到一个帖子说明出现这种情况的原因:我自己的方法跟正确题解的区别在于,正确的题解每次都new了一个新的record,而我一直是在同一个record上进行修改的,而list的add方法引用的是地址,record的元素修改但是地址一直不变,所以最终答案错误。
题解(Java)
class Solution {public int[][] merge(int[][] intervals) {Arrays.sort(intervals, (i1, i2) -> i1[0] - i2[0]);List<int[]> list = new ArrayList<>();int i = 0;while (i < intervals.length) {int[] record = new int[] {intervals[i][0], intervals[i][1]};int j = i + 1;while (j < intervals.length && intervals[j][0] <= record[1]) {record[1] = Math.max(intervals[j][1], record[1]);j++;}list.add(record);i = j;}int[][] ans = new int[list.size()][];return list.toArray(ans);}
}
错误代码:
class Solution {public int[][] merge(int[][] intervals) {Arrays.sort(intervals, (i1, i2) -> i1[0] - i2[0]);List<int[]> list = new ArrayList<>();int[] record = {intervals[0][0], intervals[0][1]};for (int[] interval : intervals) {if (interval[0] <= record[1]) {record[1] = Math.max(record[1], interval[1]);} else {list.add(record);record[0] = interval[0];record[1] = interval[1];}}list.add(record);int[][] ans = new int[list.size()][];return list.toArray(ans);}
}
剑指 Offer II 075. 数组相对排序(中等 排序 数组)相关推荐
- Leetcode刷题笔记——剑指offer II (一)【整数、数组、字符串、链表】
目录 整数 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 00 ...
- Leetcode刷题笔记——剑指offer II (五)【二分、排序、回溯】
这里写目录标题 二分查找 剑指 Offer II 069. 山峰数组的顶部 剑指 Offer II 070. 排序数组中只出现一次的数字 剑指 Offer II 071. 按权重生成随机数 剑指 Of ...
- 力扣OJ 剑指 Offer II
目录 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 004. ...
- 剑指 Offer II 114. 外星文字典(困难 图 bfs 哈希表 拓扑排序 字符串 数组)
剑指 Offer II 114. 外星文字典 现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同. 给定一个字符串列表 words ,作为这门语言的词典,words 中的字符串已经 按 ...
- 剑指offer——面试题38:数字在排序数组中出现的次数
剑指offer--面试题38:数字在排序数组中出现的次数 20180906整理 Solution1: [注意]先利用二分查找扎到一个值然后再顺序遍历的做法时间复杂度也是O(n)O(n)O(n),代码也 ...
- 剑指Offer II --- 2021/9/2
目录 剑指Offer II 116. 朋友圈 剑指Offer II 098. 路径的数目 剑指Offer II 068. 查找插入位置 剑指Offer II 078. 合并排序链表 剑指Offer I ...
- leetcode每日一题--前缀树;前缀哈希;深搜;面试题 08.04. 幂集;648. 单词替换面试题 01.09. 字符串轮转;剑指 Offer II 062. 实现前缀树
leetcode每日一题 ps:今天的每日一题没意思,简单的模拟,自己换一道 面试题 08.04. 幂集 幂集.编写一种方法,返回某集合的所有子集.集合中不包含重复的元素. 说明:解集不能包含重复的子 ...
- 剑指 Offer II 115. 重建序列
剑指 Offer II 115. 重建序列 题目描述 给定一个长度为 n 的整数数组 nums ,其中 nums 是范围为 [1,n] 的整数的排列.还提供了一个 2D 整数数组 sequences ...
- LeetCode 21.23.剑指 Offer II 078. 合并两个有序链表 | C语言版
LeetCode 21. 合并两个有序链表 | C语言版 LeetCode 21. 合并两个有序链表 题目描述 解题思路 思路一:使用栈 代码实现 运行结果 参考文章: 思路二:减少遍历节点数 代码实 ...
- Leetcode刷题笔记——剑指offer II (六)【图】
文章目录 图 695. 岛屿的最大面积 剑指 Offer II 106. 二分图 (每条边的两个结点都来自不同的集合) 剑指 Offer II 107. 矩阵中的距离 (最短路问题,建图,BFS) 剑 ...
最新文章
- 让seo效果起死回生的妙招
- 云服务器_整体服务器与微服务
- java筑基期(10)----ajaxjson(2)
- 记录一个自动创建分区的脚本
- 10分钟就能学会的.NET Core配置
- OpenCV+Python(官方中文版翻译)
- python工程控件_工程脚本插件方案 - c集成Python基础篇
- dat图片 电脑端微信_微信 PC 版迎来了重磅更新,可以在电脑端使用小程序了 !...
- Android与Chromium源码搜索工具
- 品鉴B500:艺术对技术无乐不作的反击
- matlab图像分割算法源码
- 计算机多媒体化简笔画,计算器简笔画教程
- 重新训练大脑!这些APP可治愈心理疾病
- ubuntu阿里云盘(小白羊)
- 201609-2 python CCF 更简单的思路和代码 100分
- TResNet学习笔记 --- TResNet: High Performance GPU-Dedicated Architecture
- 为什么说jsp被替代了_您说什么:最喜欢的Windows资源管理器替代品
- HTML视频学习教程,让你实战入门前端
- 第四套荧光钞大全介绍
- Win32游戏制作之---Bizzard
热门文章
- java支付宝获取付款信息,java支付宝支付开发教程
- (转)全球顶级对冲基金TOP50
- pycharm虚拟环境 更换interpreter
- 图片加载失败,img触发错误显示默认图片
- 还没收到win11系统的推送?教你这样可以直接升级win11
- php如何pfx转成jks证书,常规方法不行,变相来实现
- 阴阳师服务器维护3月14,3月14日阴阳师体验服更新:三个限定新式神
- 总结 27 类深度学习主要神经网络:结构图及应用
- jmeter请求返回报文中带有转义字符可加/转义处理后做其他操作
- java bmp 变色_java怎么实现将 bmp图片黑底白字转换为白底黑字?将白色设置为透明色,谢谢...