文章目录

  • 前言
  • 一、题目描述
  • 二、思路
    • 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:判断整数数组是否存在重复元素相关推荐

  1. LeetCode算法题个人笔记【数组】【简单1-5】【c++】

    资料来源于leetcode官网 记得多看评论! 听从大佬建议从同一类型题目开始做,首先决定做数组! 前面还有三道简单题已经做过了.共47道简单题 ** 第一题:搜索插入位置 ** 给定一个排序数组和一 ...

  2. 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] ...

  3. python【力扣LeetCode算法题库】945- 使数组唯一的最小增量

    使数组唯一的最小增量 给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1. 返回使 A 中的每个值都是唯一的最少操作次数. 示例 1: 输入:[1,2,2] 输出:1 解释: ...

  4. python【力扣LeetCode算法题库】1013-将数组分成和相等的三个部分(贪心)

    将数组分成和相等的三个部分 给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false. 形式上,如果可以找出索引 i+1 < j 且满足 (A[0] ...

  5. Leetcode算法题(C语言)5--存在重复

    题目:存在重复 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 1: 输入: [1,2,3,1] ...

  6. leetcode算法题--乘积最大子数组

    原题链接:https://leetcode-cn.com/problems/maximum-product-subarray/ 思路是用两个数组,一个最大max[],一个最小min[].然后用动态规划 ...

  7. LeetCode算法题个人笔记【数组】【简单6-10】【c++】

    ** 第六题:还是杨辉三角 ** 和 118 题 一样,依旧是杨辉三角.区别在于之前是输出所有层的数,这道题只需要输出第 k 层的数. 意思是说,我们只用一行vector< int> 就行 ...

  8. leetcode算法题--字符串转换整数 (atoi)

    原题链接: https://leetcode-cn.com/problems/string-to-integer-atoi/ https://leetcode-cn.com/problems/ba-z ...

  9. leetcode算法题--搜索旋转排序数组

    原题链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ 此题的特点是,以mid为中点,肯定有一半是有序的 首先判断t ...

最新文章

  1. 5月Web服务器份额:Microsoft亚军 份额涨1.05%
  2. oracle 10g 手动创建scott(tiger) schema
  3. 通用客户端表单验证函数修正版
  4. vs2010利用属性表自动配置OpenCV(win7的64位系统,opencv版本是2.4.10)
  5. 需求分析挑战之旅(疯狂的订餐系统)(8)——最后的疯狂
  6. 射灯安装方法图解_江苏天筑不锈钢雕塑厂家格栅射灯安装方法,格栅射灯安装注意事项...
  7. php实现excel单元格合并,字体加粗居中等操作
  8. MySQL (13)---查询数据
  9. 软件测试之手动测试存在的重要原因
  10. PPT扩展展示时,PPT展示界面背景色有时候突然变成黑底?如何解决?
  11. VVC/JEM代码学习16:xCheckRDCostMerge2Nx2N
  12. does not have permission to content://包名/external_files/sple/IMG_123123141.jpg
  13. 经典的广告词及其翻译
  14. vmoptions默认配置_VM options 以及 properties文件的一些理解
  15. keystore生成自签名证书
  16. 多看阅读设置自动翻页教程
  17. photoshop ps 美白 去污 磨皮 方法
  18. teamviewer 11 linux,Ubuntu 15.10中如何安装TeamViewer 11
  19. 英文论文的时态使用规则
  20. 在 Win 7 下使用 VirtualBOX 虚拟机安装 OS X 10.8 Mountain Lion 及 Xcode 4.5

热门文章

  1. 【PyCharm编辑器】之引用selenium包提示错误:Unresolved reference 'selenium' less... (Ctrl+F1)...
  2. post传参部分数据丢失
  3. vue基础整理-组件
  4. Spring IOC之依赖
  5. 全面掌握ISO8583报文协议
  6. 开发Java系统程序员要注意的基本知识
  7. 【Linux 内核 内存管理】RCU 机制 ③ ( RCU 模式下添加链表项 list_add_rcu 函数 | RCU 模式下删除链表项 list_del_rcu 函数 )
  8. 【错误记录】Android 模拟器安装应用报错 ( INSTALL_FAILED_INSUFFICIENT_STORAGE )
  9. 【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★
  10. 【Android 异步操作】手写 Handler ( 总结 | Message | MessageQueue | Looper | Handler ) ★