【每日一题】2007. 从双倍数组中还原原数组-2024.4.18

server/2024/10/21 3:42:19/

题目:

2007. 从双倍数组中还原原数组

一个整数数组 original 可以转变成一个 双倍 数组 changed ,转变方式为将 original 中每个元素 值乘以 2 加入数组中,然后将所有元素 随机打乱 。

给你一个数组 changed ,如果 change 是 双倍 数组,那么请你返回 original数组,否则请返回空数组。original 的元素可以以 任意 顺序返回。

示例 1:

输入:changed = [1,3,4,2,6,8]
输出:[1,3,4]
解释:一个可能的 original 数组为 [1,3,4] :
- 将 1 乘以 2 ,得到 1 * 2 = 2 。
- 将 3 乘以 2 ,得到 3 * 2 = 6 。
- 将 4 乘以 2 ,得到 4 * 2 = 8 。
其他可能的原数组方案为 [4,3,1] 或者 [3,1,4] 。

示例 2:

输入:changed = [6,3,0,1]
输出:[]
解释:changed 不是一个双倍数组。

示例 3:

输入:changed = [1]
输出:[]
解释:changed 不是一个双倍数组。

提示:

  • 1 <= changed.length <= 105
  • 0 <= changed[i] <= 105

解答:

代码:

class Solution {public int[] findOriginalArray(int[] changed) {Arrays.sort(changed);int[] ans=new int[changed.length/2];int ansIdx=0;Map<Integer,Integer> hm=new HashMap<>();for(int x:changed){if(!hm.containsKey(x)){//x不是双倍后的元素if(ansIdx==ans.length){return new int[0];}ans[ansIdx++]=x;hm.merge(x*2,1,Integer::sum);//标记一个双倍元素}else{//x是双倍后的元素int c=hm.merge(x,-1,Integer::sum);//清除一个标记if(c==0){hm.remove(x);}}}return ans;}
}

结果:


http://www.ppmy.cn/server/6316.html

相关文章

MySQL内置函数

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;MySQL &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容涉及了MySQL中的内置函数 文章目录 MySQL内置函数1.日期…

【Linux】centos 7 vim默认一个tab键相当于8个空格 -> 修改成4个空格

专栏文章索引&#xff1a;Linux 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、项目场景 二、问题描述 三、原因分析 四、解决方案 1.仅本次 2.永久 一、项目场景 使用vim编辑器编写python3代码 二、问题描述 在使用vim编辑器时&#xff0c;想要缩进&am…

R中list与dataframe相互转换

在用R语言处理数据的过程中&#xff0c;我经常会遇到list和dataframe数据格式之间的转换&#xff0c;一般是需要把list转换为dataframe的情况居多。一直以来我也没有好好研究两者的转换关系&#xff0c;通常都是碰到一次花时间解决一次&#xff0c;不知道有没有和我一样的小伙伴…

C++初级----list(STL)

1、 list介绍 1.1、 list介绍 1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 1. list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向 其前一…

【uniapp】uniapp返回上一页,并实现刷新界面数据

在uniapp中&#xff0c;经常会有返回上一页的情况&#xff0c;官方提供有 uni.navigateBack 这个api来实现效果&#xff0c;但是此方法返回到上一页之后页面并不会自动刷新&#xff08;不会触发上一页的onLoad()方法&#xff09;。 使用场景 从一个列表界面点击新增按钮&…

EasyScholar使用

查看 T键翻译 Y键隐藏

python-selenium +Chrome driver环境配置

selenium Chrome driver环境配置_chromedriver 122.0.6261.112-CSDN博客

IoC 思想简单而深邃

一、序言 本文跟大家聊聊 IoC 这一简单而深邃的思想。 二、依赖倒置原则 软件工程理论中共有六大设计原则&#xff1a; 单一职责原则&#xff1a;不存在多于一个的因素导致类的状态发生变更&#xff0c;即一个类只负责一项单一的职责。里氏替换原则&#xff1a;基类出现的地…