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: 输 ...
随机推荐
- [MIT6.006] 17. Bellman-Ford
如果出现下图所示的负循环,会有相关点的当前最短路径为undefined(即无法定义). 之前我们也看过通用的最短路径算法思路,如下图所示: 这种通用算法会有两个问题: 时间复杂度呈指数性. 如果出现负 ...
- 【涂鸦物联网足迹】API及SDK介绍
前序系列文章>>> [涂鸦物联网足迹]物联网主流通信方式 我们系列文章,都会围绕如何完成一款智能"隔空接吻机"的开发.希望能帮到各异地恋or异国恋的情侣们! 本文 ...
- mysql之优化器、执行计划、简单优化
mysql之优化器.执行计划.简单优化 2018-12-12 15:11 烟雨楼人 阅读(794) 评论(0) 编辑 收藏 引用连接: https://blog.csdn.net/DrDanger/a ...
- nginx状态监控统计
nginx是一款很优秀的web服务器软件,很多地方都有接触和使用到他,大部分的场景压力还没达到需要调优的地步,而调优的难点其实不在于调,而在于各项状态的监控,能够很快的找到资源在什么时候出现问题,调整 ...
- CSS属性(CSS盒子模型)
1.CSS盒子模型 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&q ...
- 精尽 MyBatis 源码分析 - 整体架构
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
- Mysql的下载,安装,远程连接,密码加密规则修改。
第一次接触mysql,,很多地方不懂,出了很多问题.本来应该在Linux系统中安装mysql的,但是奈何各种电脑限制,所以在公司电脑的Windows service R2 系统上装了mysql数据库. ...
- bWAPP----HTML Injection - Reflected (URL)
HTML Injection - Reflected (URL) 核心代码 1 <div id="main"> 2 3 <h1>HTML Injection ...
- 两年经验拿到蚂蚁金服,字节offer,附上金九银十BAT面试核心知识点整理
前言 我自己是本科毕业后在老东家干了两年多,老东家算是一家"小公司"(毕竟这年头没有 BAT 或 TMD 的 title 都不好意思报出身),毕业这两年多我也没有在大厂待过,因此找 ...
- PHP 递归删除目录中文件
/** * 递归删除目录中文件 * @param $pathname * @return bool */public static function delDir($pathname)//要删除的目录 ...