LeetCode算法题1:判断整数数组是否存在重复元素
文章目录
- 前言
- 一、题目描述
- 二、思路
- 1.暴力破解
- 2.空间换时间(有点像桶排序思想)
- 3,排序
- 总结
前言
本系列文章为leetCode刷题笔记,仅供参考。
一、题目描述
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 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
见:https://leetcode-cn.com/problems/contains-duplicate/
二、思路
1.暴力破解
对该数组遍历,依次判断是否有无重复元素,时间复杂度为O(n2),空间复杂度为O(1)。(Fail)
代码如下:
class Solution {public boolean containsDuplicate(int[] nums) {for(int i=0;i<nums.length;i++){for(int j=i+1;j<nums.length;j++)if(nums[i]==nums[j])return true;}return false;}
}
2.空间换时间(有点像桶排序思想)
采用一个临时数组来标记原数组中元素出现次数,但是没有考虑到有负整数的存在,时间复杂度为O(n),空间复杂度为O(m)。(Fail)
代码如下:
public boolean containsDuplicate(int[] nums){int maxN=Integer.MIN_VALUE;for(int i=0;i<nums.length;i++){if(nums[i]>maxN)maxN=nums[i];}int[] tmp=new int[maxN+1]; //要想后面的maxN下标可用,申请空间需大于maxN。for(int i=0;i<nums.length;i++){tmp[nums[i]]+=1;if(tmp[nums[i]]==2)return true;}return false;}
3,排序
先排序(ologn),再判断是否存在重复元素。时间复杂度为O(nlogn),空间复杂度为O(logn),这里取得是递归调用栈的深度,(Pass)
代码如下:
public boolean containsDuplicate(int[] nums){Arrays.sort(nums);for(int i=0;i<nums.length-1;i++){if(nums[i]==nums[i+1])return true;}return false;}
总结
假设空间复杂度不做限制,且不采用排序,是否有时间复杂度低于O(n2)的解法呢?
LeetCode算法题1:判断整数数组是否存在重复元素相关推荐
- LeetCode算法题个人笔记【数组】【简单1-5】【c++】
资料来源于leetcode官网 记得多看评论! 听从大佬建议从同一类型题目开始做,首先决定做数组! 前面还有三道简单题已经做过了.共47道简单题 ** 第一题:搜索插入位置 ** 给定一个排序数组和一 ...
- python【力扣LeetCode算法题库】912- 排序数组
排序数组 给定一个整数数组 nums,将该数组升序排列. 示例 1: 输入:[5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:[5,1,1,2,0,0] 输出:[0,0,1,1,2,5] ...
- python【力扣LeetCode算法题库】945- 使数组唯一的最小增量
使数组唯一的最小增量 给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1. 返回使 A 中的每个值都是唯一的最少操作次数. 示例 1: 输入:[1,2,2] 输出:1 解释: ...
- python【力扣LeetCode算法题库】1013-将数组分成和相等的三个部分(贪心)
将数组分成和相等的三个部分 给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false. 形式上,如果可以找出索引 i+1 < j 且满足 (A[0] ...
- Leetcode算法题(C语言)5--存在重复
题目:存在重复 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 1: 输入: [1,2,3,1] ...
- leetcode算法题--乘积最大子数组
原题链接:https://leetcode-cn.com/problems/maximum-product-subarray/ 思路是用两个数组,一个最大max[],一个最小min[].然后用动态规划 ...
- LeetCode算法题个人笔记【数组】【简单6-10】【c++】
** 第六题:还是杨辉三角 ** 和 118 题 一样,依旧是杨辉三角.区别在于之前是输出所有层的数,这道题只需要输出第 k 层的数. 意思是说,我们只用一行vector< int> 就行 ...
- leetcode算法题--字符串转换整数 (atoi)
原题链接: https://leetcode-cn.com/problems/string-to-integer-atoi/ https://leetcode-cn.com/problems/ba-z ...
- leetcode算法题--搜索旋转排序数组
原题链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ 此题的特点是,以mid为中点,肯定有一半是有序的 首先判断t ...
最新文章
- 5月Web服务器份额:Microsoft亚军 份额涨1.05%
- oracle 10g 手动创建scott(tiger) schema
- 通用客户端表单验证函数修正版
- vs2010利用属性表自动配置OpenCV(win7的64位系统,opencv版本是2.4.10)
- 需求分析挑战之旅(疯狂的订餐系统)(8)——最后的疯狂
- 射灯安装方法图解_江苏天筑不锈钢雕塑厂家格栅射灯安装方法,格栅射灯安装注意事项...
- php实现excel单元格合并,字体加粗居中等操作
- MySQL (13)---查询数据
- 软件测试之手动测试存在的重要原因
- PPT扩展展示时,PPT展示界面背景色有时候突然变成黑底?如何解决?
- VVC/JEM代码学习16:xCheckRDCostMerge2Nx2N
- does not have permission to content://包名/external_files/sple/IMG_123123141.jpg
- 经典的广告词及其翻译
- vmoptions默认配置_VM options 以及 properties文件的一些理解
- keystore生成自签名证书
- 多看阅读设置自动翻页教程
- photoshop ps 美白 去污 磨皮 方法
- teamviewer 11 linux,Ubuntu 15.10中如何安装TeamViewer 11
- 英文论文的时态使用规则
- 在 Win 7 下使用 VirtualBOX 虚拟机安装 OS X 10.8 Mountain Lion 及 Xcode 4.5
热门文章
- 【PyCharm编辑器】之引用selenium包提示错误:Unresolved reference 'selenium' less... (Ctrl+F1)...
- post传参部分数据丢失
- vue基础整理-组件
- Spring IOC之依赖
- 全面掌握ISO8583报文协议
- 开发Java系统程序员要注意的基本知识
- 【Linux 内核 内存管理】RCU 机制 ③ ( RCU 模式下添加链表项 list_add_rcu 函数 | RCU 模式下删除链表项 list_del_rcu 函数 )
- 【错误记录】Android 模拟器安装应用报错 ( INSTALL_FAILED_INSUFFICIENT_STORAGE )
- 【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★
- 【Android 异步操作】手写 Handler ( 总结 | Message | MessageQueue | Looper | Handler ) ★