剑指 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. 数组相对排序(中等 排序 数组)相关推荐

  1. Leetcode刷题笔记——剑指offer II (一)【整数、数组、字符串、链表】

    目录 整数 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 00 ...

  2. Leetcode刷题笔记——剑指offer II (五)【二分、排序、回溯】

    这里写目录标题 二分查找 剑指 Offer II 069. 山峰数组的顶部 剑指 Offer II 070. 排序数组中只出现一次的数字 剑指 Offer II 071. 按权重生成随机数 剑指 Of ...

  3. 力扣OJ 剑指 Offer II

    目录 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 004. ...

  4. 剑指 Offer II 114. 外星文字典(困难 图 bfs 哈希表 拓扑排序 字符串 数组)

    剑指 Offer II 114. 外星文字典 现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同. 给定一个字符串列表 words ,作为这门语言的词典,words 中的字符串已经 按 ...

  5. 剑指offer——面试题38:数字在排序数组中出现的次数

    剑指offer--面试题38:数字在排序数组中出现的次数 20180906整理 Solution1: [注意]先利用二分查找扎到一个值然后再顺序遍历的做法时间复杂度也是O(n)O(n)O(n),代码也 ...

  6. 剑指Offer II --- 2021/9/2

    目录 剑指Offer II 116. 朋友圈 剑指Offer II 098. 路径的数目 剑指Offer II 068. 查找插入位置 剑指Offer II 078. 合并排序链表 剑指Offer I ...

  7. leetcode每日一题--前缀树;前缀哈希;深搜;面试题 08.04. 幂集;648. 单词替换面试题 01.09. 字符串轮转;剑指 Offer II 062. 实现前缀树

    leetcode每日一题 ps:今天的每日一题没意思,简单的模拟,自己换一道 面试题 08.04. 幂集 幂集.编写一种方法,返回某集合的所有子集.集合中不包含重复的元素. 说明:解集不能包含重复的子 ...

  8. 剑指 Offer II 115. 重建序列

    剑指 Offer II 115. 重建序列 题目描述 给定一个长度为 n 的整数数组 nums ,其中 nums 是范围为 [1,n] 的整数的排列.还提供了一个 2D 整数数组 sequences ...

  9. LeetCode 21.23.剑指 Offer II 078. 合并两个有序链表 | C语言版

    LeetCode 21. 合并两个有序链表 | C语言版 LeetCode 21. 合并两个有序链表 题目描述 解题思路 思路一:使用栈 代码实现 运行结果 参考文章: 思路二:减少遍历节点数 代码实 ...

  10. Leetcode刷题笔记——剑指offer II (六)【图】

    文章目录 图 695. 岛屿的最大面积 剑指 Offer II 106. 二分图 (每条边的两个结点都来自不同的集合) 剑指 Offer II 107. 矩阵中的距离 (最短路问题,建图,BFS) 剑 ...

最新文章

  1. 让seo效果起死回生的妙招
  2. 云服务器_整体服务器与微服务
  3. java筑基期(10)----ajaxjson(2)
  4. 记录一个自动创建分区的脚本
  5. 10分钟就能学会的.NET Core配置
  6. OpenCV+Python(官方中文版翻译)
  7. python工程控件_工程脚本插件方案 - c集成Python基础篇
  8. dat图片 电脑端微信_微信 PC 版迎来了重磅更新,可以在电脑端使用小程序了 !...
  9. Android与Chromium源码搜索工具
  10. 品鉴B500:艺术对技术无乐不作的反击
  11. matlab图像分割算法源码
  12. 计算机多媒体化简笔画,计算器简笔画教程
  13. 重新训练大脑!这些APP可治愈心理疾病
  14. ubuntu阿里云盘(小白羊)
  15. 201609-2 python CCF 更简单的思路和代码 100分
  16. TResNet学习笔记 --- TResNet: High Performance GPU-Dedicated Architecture
  17. 为什么说jsp被替代了_您说什么:最喜欢的Windows资源管理器替代品
  18. HTML视频学习教程,让你实战入门前端
  19. 第四套荧光钞大全介绍
  20. Win32游戏制作之---Bizzard

热门文章

  1. java支付宝获取付款信息,java支付宝支付开发教程
  2. (转)全球顶级对冲基金TOP50
  3. pycharm虚拟环境 更换interpreter
  4. 图片加载失败,img触发错误显示默认图片
  5. 还没收到win11系统的推送?教你这样可以直接升级win11
  6. php如何pfx转成jks证书,常规方法不行,变相来实现
  7. 阴阳师服务器维护3月14,3月14日阴阳师体验服更新:三个限定新式神
  8. 总结 27 类深度学习主要神经网络:结构图及应用
  9. jmeter请求返回报文中带有转义字符可加/转义处理后做其他操作
  10. java bmp 变色_java怎么实现将 bmp图片黑底白字转换为白底黑字?将白色设置为透明色,谢谢...