LeetCode初级算法之数组:217 存在重复元素
存在重复元素
题目地址:https://leetcode-cn.com/problems/contains-duplicate/
给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false。
示例 1:
输入: [1,2,3,1]
输出: true
示例 2:
输入: [1,2,3,4]
输出: false
示例 3:
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true
题目信息
输入: 整数数组
输出: 布尔(数组是否有重复元素)
思考
这一题比前几题都要简单,第一想法就用set存值会有成功与否判断来简单解决,不用工具类的话还有暴力比较那就是双指针比较采用嵌套循环,还有一种就是排好序再比较重复就是挨个了使用当前位置比较上一个只需要一次遍历。
代码总结
//方法一
public boolean containsDuplicate(int[] nums) {
Set set = new HashSet();
for(int i = 0; i < nums.length; i++){
if(!set.add(nums[i])){
return true;
}
}
return false;
}
空间复杂度:使用了set空间占用小于等于n,为O(n)
时间复杂度:就一次遍历为n次,为O(n)
//方法二
public boolean containsDuplicate(int[] nums) {
Arrays.sort(nums);
for (int i = 1; i < nums.length; i++) {
if (nums[i] == nums[i - 1]) return true;
}
return false;
}
空间复杂度:没用额外空间,为O(1)
时间复杂度:有排序约nlogn次、有遍历为n次,为O(nlogn)。主要取决于排序的时间复杂度,平均最好的就是快排nlog2n
//方法三
public boolean containsDuplicate(int[] nums) {
for (int i = 0; i < nums.length-1; i++) {
for (int j = i+1; j < nums.length; j++) {
if (nums[j] == nums[i]) return true;
}
}
return false;
}
空间复杂度:没用额外空间,为O(1)
时间复杂度:双层遍历,外层遍历为n次,内层遍历次数逐步减少为小于n2次,为O(n2)
总结
总体来说就是两种思路:一个利用set存值不容纳重复、一个就是扫描比较,在扫描比较中使用先排序的方式优一点点
LeetCode初级算法之数组:217 存在重复元素的更多相关文章
- LeetCode初级算法之数组:48 旋转图像
旋转图像 题目地址:https://leetcode-cn.com/problems/rotate-image/ 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: ...
- LeetCode初级算法之数组:26 删除排序数组中的重复项
删除排序数组中的重复项 题目地址:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/ 给定一个排序数组,你需要在 ...
- 算法练习LeetCode初级算法之数组
删除数组中的重复项 官方解答: 旋转数组 存在重复元素 只出现一次的数 官方解答: 同一个字符进行两次异或运算就会回到原来的值 两个数组的交集 II import java.util.Arr ...
- LeetCode初级算法之数组:36 有效数独
有效数独 题目地址:https://leetcode-cn.com/problems/valid-sudoku/ 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. ...
- LeetCode初级算法之数组:136 只出现一次的元素
只出现一次的元素 题目地址:https://leetcode-cn.com/problems/single-number/ 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找 ...
- LeetCode初级算法之数组:66 加一
加一 题目地址:https://leetcode-cn.com/problems/plus-one/ 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一.最高位数字存放在数组的首位, 数 ...
- LeetCode初级算法之数组:283 移动零
移动零 题目地址:https://leetcode-cn.com/problems/move-zeroes/ 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺 ...
- LeetCode初级算法之数组:350 两个数组的交集 II
两个数组的交集 II 题目地址:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/ 给定两个数组,编写一个函数来计算它们的交 ...
- LeetCode初级算法之数组:189 旋转数组
旋转数组 题目地址:https://leetcode-cn.com/problems/rotate-array/ 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 示例 1: 输 ...
随机推荐
- maven install 时 pom中skip test
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-suref ...
- 强迫自己学习Jquery三
元素定位问题 offset 和 position必须要好好看一下,
- Js中函数声明和函数表达式的区别
先看以下几段烧脑的代码: f();//=>? var f = function () { console.log("var"); } function f() { conso ...
- 前端动画框架GSAP框架随笔
gsap是目前非常流行的前端动画框架,可以非常轻松构造出复杂的动画效果,这里仅对我实际使用中的一些例子进行总结 官网 示例 文章种所使用代码的在线示例 基础用法 // 声明一个滚动控制器 let ct ...
- Socket shutdown close简要分析
shutdown 系统调用关闭连接的读数据通道 写数据通道 或者 读写数据通道: 关闭读通道:丢弃socket fd 读数据以及调用shutdown 后到达的数据: 关闭写通道:不同协议处理不同:t ...
- 为什么删除的Ceph对象还能get
前言 在很久以前在研究一套文件系统的时候,当时发现一个比较奇怪的现象,没有文件存在,磁盘容量还在增加,在研究了一段时间后,发现这里面有一种比较奇特的处理逻辑 这套文件系统在处理一个文件的时候放入的是一 ...
- java.lang.IllegalStateException: Duplicate key 20
这个我在公司遇到的一个问题.原因:使用Map<String, String> RelationMap = relation.stream().collect(Collectors.toMa ...
- http://www.etymon.cn/yingyucigen/3093.html
import requests import lxml.etree as etree import xml.etree.ElementTree as ET # 详情页 # 3093-148 # htt ...
- IDEA 使用的一些快捷键记录
1,ctrl+tab 导航当前编辑打开的所有文件,按住Ctrl,使用backspace 可以关闭某个文件 2,ctrl+shift+alt+s 打开项目设置,alt+shift+s 打开所有设置 3, ...
- CTF练习(1)这是一张单纯的图片?
1.练习平台http://123.206.31.85/challenges 2.图片下载后放进WInhex 最后安利一个 CTF资源库|CTF工具包|CTF工具集合 网站,里面工具很全,很方便 ...