[剑指offer][JAVA]面试题第[03]题[数组中的重复数字][HashSet]

【问题描述】[数组中的重复数字][简单]

找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3 

【解答思路】

1. 排序后比较

时间复杂度:O(NlogN) 空间复杂度:O(1)

class Solution {public int findRepeatNumber(int[] nums) {Arrays.sort(nums);for(int i=0;i<nums.length-1;i++){if(nums[i]==nums[i+1]){return nums[i];}}return -1;}
}
2. HashSet

时间复杂度:O(N) 空间复杂度:O(N)

public int findDuplicate(int[] nums) {HashSet<Integer> set = new HashSet<>();for (int i = 0; i <= nums.length - 1; i++) {if (set.contains(nums[i])) {return nums[i];}else{set.add(nums[i]);}}return -1;
}
3.原地置换

在这里插入图片描述
时间复杂度:O(N) 空间复杂度:O(1)

class Solution {public int findRepeatNumber(int[] nums) {int i = 0;while(i < nums.length) {if(nums[i] == i) {i++;continue;}if(nums[nums[i]] == nums[i]) return nums[i];int tmp = nums[i];nums[i] = nums[tmp];nums[tmp] = tmp;
//nums[nums[i]], nums[i] = nums[i], nums[nums[i]],为什么这里的交换可以让元素的 索引 与 值 相等。//下面供大家方便看出来(因为我看了好久才反应过来)://记num[ i ] =a,num[num[ i ] ]=num[ a ]=b,那么 交换后,num[ i ]=b, num[num[i]]=num[a]=a,这时候下标 a 对应的元素也是a,达到目的}return -1;}
}

【总结】

1.考察的是程序员的沟通能力,先问面试官要时间/空间需求
  • 时间优先就用字典,
  • 有空间要求,就用指针+原地排序数组
  • 要求空间O(1)并且不能修改原数组,还得写成二分法
2.灵活思路 一题多解
3. HashMap 或 HashSet常见用法

3.1 HashSet

新建 HashSet<Integer> set = new HashSet<>();

(1)增加
public boolean add(E e);
(2)删除
public boolean remove(Object j);
(3)对比查找
public boolean contains(Object j);
(4)清空集合
public void clear();
(5)获取长度
public int size();
3.2 HashMap

新建 HashMap<String,Integer> map= new HashMap<String,Integer>();

(1) 插入键值对数据
public V put(K key, V value)
(2)根据键值获取键值对值数据
public V get(Object key)
(3)获取Map中键值对的个数
public int size()
(4)判断Map集合中是否包含键为key的键值对
public boolean containsKey(Object key)
(5)判断Map集合中是否包含值为value的键值对
boolean containsValue(Object value)
(6)判断Map集合中是否没有任何键值对
public boolean isEmpty()
(7)清空Map集合中所有的键值对
public void clear()
(8)根据键值删除Map中键值对
public V remove(Object key)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425757.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

德国超级计算机中心,德国:强化人工智能能力建设 加大高性能计算网络投资...

图片来源&#xff1a;德国马克斯普朗克智能系统研究所德国2020年更新《国家人工智能战略》&#xff0c;在原先30亿欧元基础上再增加20亿欧元支持德国人工智能研究。德国科学联席会议决定投入1.33亿欧元&#xff0c;继续加强对人工智能能力中心和“高校教育的人工智能”进行资助…

html:(9):blockquote引用和br换行

<blockquote>标签&#xff0c;长文本引用 <blockquote>的作用也是引用别人的文本。但它是对长文本的引用&#xff0c;如在文章中引入大段某知名作家的文字&#xff0c;这时需要这个标签。 等等&#xff0c;上一节<q>标签不是也是对文本的引用吗&#xff1f;不…

K3CLOUD数据权限授权

1.定义角色&#xff0c;把用户放入角色内 2.设置数据规则 3.设置业务对象功能授权 转载于:https://www.cnblogs.com/RogerLu/p/10370347.html

html:(10):添加空格和hr

为你的网页中添加一些空格 在上一节的例子&#xff0c;我们已经讲解过在html代码中输入空格、回车都是没有作用的。要想输入空格&#xff0c;必须写入 。 语法&#xff1a; 在html代码中输入空格是不起作用的&#xff0c;如下代码。 在浏览中显示&#xff0c;还是没有空格效果…

[剑指offer][JAVA]面试题第[04]题[二维数中的查找][数组]

【问题描述】[中等] 在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺序排序。请完成一个函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该整数。示例:现有矩阵 matrix …

微机计算机原理姚向华课后答案,微型计算机操作系统

1. 详尽剖析Mac OS X内部工作原理的具体细节。 2. 揭示Mac OS X及其组件的核心体系结构和实现。 3. 以一种面向实现的方法介绍Mac OS X系统。 4. 透彻解释Mac OS X的众多用户级和内核级IPC机制的工作原理&#xff0c;并且提供足够的知识和示例&#xff0c;可以满足各个层次的读…

TokenFlow详解

https://github.com/omerbt/TokenFlow/issues/25 https://github.com/omerbt/TokenFlow/issues/31 https://github.com/omerbt/TokenFlow/issues/32 https://github.com/eps696/SDfu register_extended_attention_pnp1. 为所有BasicTransformerBlock layer的attn1重构forward2.…

html:(11):address和code标签

<address>标签&#xff0c;为网页加入地址信息 一般网页中会有一些网站的联系地址信息需要在网页中展示出来&#xff0c;这些联系地址信息如公司的地址就可以<address>标签。也可以定义一个地址&#xff08;比如电子邮件地址&#xff09;、签名或者文档的作者身份…

Java虚拟机(JVM)面试题大集合

Java虚拟机&#xff08;JVM&#xff09;Java内存区域说一下 JVM 的主要组成部分及其作用&#xff1f;说一下 JVM 运行时数据区深拷贝和浅拷贝说一下堆栈的区别&#xff1f;队列和栈是什么&#xff1f;有什么区别&#xff1f;HotSpot虚拟机对象探秘对象的创建为对象分配内存处理…

crossdomain.xml配置不当的利用和解决办法

00x1: 今天在无聊的日站中发现了一个flash小站&#xff0c;点进crossdomain.xml一看&#xff0c;震惊 本屌看到这个*就发觉事情不对 百度一下&#xff0c;这是一个老洞&#xff0c;配置不当能引起各种问题就算能远程加载恶意的swf文件&#xff0c;(swf是flash专用后缀文件常用于…

html:(12):pre和ul-li

使用<pre>标签为你的网页加入大段代码 在上节中介绍加入一行代码的标签为<code>&#xff0c;但是在大多数情况下是需要加入大段代码的&#xff0c;如下图&#xff1a; 怎么办&#xff1f;不会是每一代码都加入一个<code>标签吧&#xff0c;没有这么复杂&…

[Leedcode][JAVA][第394题][字符串解码][栈][类型转换]

【问题描述】[中等] 给定一个经过编码的字符串&#xff0c;返回它解码后的字符串。编码规则为: k[encoded_string]&#xff0c;表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的&#xff1b;输入字符串中没有额外的空…

html:(13):ol-li和div作用

使用ol&#xff0c;添加图书销售排行榜 如果想在网页中展示有前后顺序的信息列表&#xff0c;怎么办呢&#xff1f;如&#xff0c;当当网上的书籍热卖排行榜&#xff0c;如下图所示。这类信息展示就可以使用<ol>标签来制作有序列表来展示。 语法&#xff1a; <ol>…

粮草先行——Android折叠屏开发技术点番外篇之运行时变更处理原则

上一篇文章中&#xff0c;我们有提到Activity在屏幕尺寸发生变更时的处理方式&#xff0c;总共有两种&#xff1a; 重启APP以适应屏幕改变&#xff1b;手动处理数据&#xff0c;避免APP重启。同样&#xff0c;这两种方式也同时适用于改变屏幕方向、更改系统语言、甚至输入法等等…

[剑指offer][JAVA]面试题第[05]题[替换空格][StringBuilder/Buffer]

【问题描述】[简单] 请实现一个函数&#xff0c;把字符串 s 中的每个空格替换成"%20"。示例 1&#xff1a;输入&#xff1a;s "We are happy." 输出&#xff1a;"We%20are%20happy."限制&#xff1a;0 < s 的长度 < 10000【解答思路】 …

计算机表格最高分,excel表格里怎样算最高分

在Excel中录入好数据以后进行数据统计&#xff0c;再统计过后多数需要算出最高值得&#xff0c;有些朋友可能不太会求最高值&#xff0c;接下来是学习啦小编为大家带来的excel如何求最高值的方法&#xff0c;欢迎大家来到学习啦学习。excel表格算最高分的方法1&#xff1a;下图…

html:(14):给div命名和table标签

给div命名&#xff0c;使逻辑更加清晰 在上一小节中&#xff0c;我们把一些标签放进<div>里&#xff0c;划分出一个独立的逻辑部分。为了使逻辑更加清晰&#xff0c;我们可以为这一个独立的逻辑部分设置一个名称&#xff0c;用id属性来为<div>提供唯一的名称&…

杜克大学计算机硕士要几年,2017杜克大学春季不招计算机专业的硕士?

原标题&#xff1a;2017杜克大学春季不招计算机专业的硕士&#xff1f;计算机科学&#xff0c;理工科中常申请的一个专业&#xff0c;每一年都会有大批的计算机同学奔赴战场&#xff0c;准备材料&#xff0c;刷托福GRE考高分&#xff0c;只为等待自己心中梦寐以求学校的那片橄榄…

[剑指offer][JAVA]面试题第[06]题[从尾到头打印链表][栈][递归]

【问题描述】[简单] 输入一个链表的头节点&#xff0c;从尾到头反过来返回每个节点的值&#xff08;用数组返回&#xff09;。示例 1&#xff1a;输入&#xff1a;head [1,3,2] 输出&#xff1a;[2,3,1]限制&#xff1a; 0 < 链表长度 < 10000【解答思路】 1. 常规思路…

jQuery使用(八):运动方法

show()、hide()、toggle()参数&#xff1a;null或(duration,easing,callblack)fadeIn()、fadeout()、fadeToggle()、fadeTo()参数&#xff1a;null或(duration,[opacity],easing,callblack)slideDown(),slideUp(),slideToggle()参数&#xff1a;null或(duration,easing,callbla…