存在重复元素Ⅱ

  • 题目
  • 思路与算法
  • 代码实现
  • 时间复杂度分析

题目

思路与算法

  1. 双指针暴力法
  2. 利用HashSet的数据唯一性,配合大小为k的滑动窗口判断

代码实现

方法一

package com.immunize.leetcode.containsNearbyDuplicate;/*** 方法一: 双指针暴力* * @author Mr IMMUNIZE**/
public class Solution {public boolean containsNearbyDuplicate(int[] nums, int k) {for (int i = 0; i < nums.length - 1; i++) {for (int j = i + 1; j < nums.length; j++) {while (nums[i] == nums[j] && Math.abs(j - i) <= k) {return true;}}}return false;}
}

方法二

package com.immunize.leetcode.containsNearbyDuplicate;import java.util.HashSet;/*** 方法二:把前面k个和后面的依次进行处理,类似于加一个长度为k的滑动窗口,再利用HashSet的数据唯一性,进行判断即可* * @author Mr IMMUNIZE**/
public class Solution2 {public boolean containsNearbyDuplicate(int[] nums, int k) {// 新建HashSetHashSet<Integer> set = new HashSet<>();// 处理kk = (k > nums.length ? nums.length : k);// [0-k]的处理for (int i = 0; i < k; i++) {if (!set.add(nums[i])) {return true;}}// [k+1,n]的处理for (int j = k; j < nums.length; j++) {if (!set.add(nums[j])) {return true;}set.remove(nums[j - k]);}return false;}}

时间复杂度分析

方法一:双指针双层循环,时间复杂度为O(N²)
方法二:只遍历一遍,时间复杂度为O(N)

20200227:存在重复元素Ⅱ(leetcode219)相关推荐

  1. leetcode:2680 Remove Duplicates from Sorted Array 删除数组中的重复元素

    leetcode:26 对数组元素进行去重,使得原数组重复元素最多保留1个 限制: 我们不可以额外分配数组,必须保持空间复杂度为O(1) 这个并不难实现: class Solution(object) ...

  2. 递归/回溯:Subsets II求子集(有重复元素)

    上一篇描述了针对数组中没有重复元素进行子集的求取过程递归/回溯:subsets求子集 但是当出现如下数组时: 例如: nums[] = [2, 1, 2, 2] 结果为: [[], [1], [1,2 ...

  3. LeetCode实战:存在重复元素

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given an ar ...

  4. php判断数组不重复的元素,php从数组中随机选择若干不重复元素

    php从数组中随机选择若干唯一元素 /* * $array = the array to be filtered * $total = the maximum number of items to r ...

  5. python删除列表中的重复元素并保持相对顺序不变

    python删除列表中的重复元素并保持相对顺序不变 从列表中删除重复项以便所有元素都是唯一的同时保持原有相对顺序不变 对于列表我们可以使用如下方法: l1 = [1,7,7,8,5,5,4] l2 = ...

  6. 全排列:不含重复元素和含重复元素的全排列

    1.不含重复元素 算法思路: 1.n个元素全排列 = (n-1)个元素的全排列+(另一个元素作为前缀) 2.出口:如果只有一个元素的全排列,则说明已经排完,输出数组: 3.不断将每个元素放在第一个元素 ...

  7. Java中ArrayList问题:删除一个ArrayList中的重复元素,注意留意一个问题

    该问题有两种方法: 一 利用两个数组,此法简单,不讨论 二 利用一个数组,从第0个开始依次取元素,并在其后元素中查找是否有该元素,有则删掉后面的重复元素,依次遍历.---但是这种情况要特别注意,当后续 ...

  8. java删除有序数组中的重复元素_java去除已排序数组中的重复元素

    题目描述 给定一个已排序的数组,去除数组中的重复元素,只保留一个重复的元素,并且返回新的数组长度. 要求: 不要给数组分配额外的空间,你必须使用常量的内存大小进行原地操作. 例如: 给出数组A=[1, ...

  9. Java查找数组重复元素,并打印重复元素、重复次数、重复元素位置

    面试题查找重复元素并打印重复次数和重复位置,一顿懵逼,回来死磕写下来,打印指定重复次数和最大次数,其他在此基础上可以再更新 package sort; import org.testng.annota ...

最新文章

  1. python代码统计字符串中大写字符、小写字符、特殊字符以及数值字符出现的次数
  2. java lombok.getter_lombok注解Getter和Setter的使用
  3. 有人顶贴,是对你的肯定
  4. 细数英特尔收购McAfee可获得安全产品
  5. [BZOJ]1503: [NOI2004]郁闷的出纳员
  6. MySQL如何存储Emoji表情,UTF-8和UTF-8MB4字符编码有何区别
  7. tf.reduce_max()函数的用法详解
  8. HTML里Dom onload和jQuery document ready这两个事件的区别
  9. (转载)SpringBoot 发送邮件和附件
  10. 重复包含定义 导致未定义类型不识别错误
  11. JVM实战总结:一个多线程中对象引用的问题
  12. iOS之UI--Quartz2D的入门应用--重绘下载圆形进度条
  13. Windows下 Nginx创建文件服务器
  14. 反转链表——Java递归求解
  15. 制造业信息化的伴侣---Windows 2016超融合
  16. python实现em聚类算法_EM算法的python实现的方法步骤
  17. 学区摇号软件设计_小升初:多校划片与单校划片,2020年小摇号最全解析!
  18. Linux中 安装一些实用小软件总结
  19. 什么是5G?它能为我们带来什么样的便利?思维导图《5G时代》给你新认识
  20. 计算机自动控制论文,精选:计算机在自动控制技术实践中的应用分析论文原稿...

热门文章

  1. 面试官:你连 RESTful 都不知道我怎么敢要你?| 原力计划
  2. 不要在网站上无限滚动!
  3. 微信小程序 731 天
  4. 数据库的 N 多骚操作了解一下?
  5. 17 倍新增转化率?快应用单挑 APP,妥妥滴!
  6. 科技无障碍盛会举办,人工智能和创新成为高频词!
  7. html5 drawimage 不显示,javascript – 来自视频的HTML5 Canvas drawImage在第一次绘制时不显示...
  8. matlab无法右键,GUI右键菜单不能在鼠标右键的位置显示
  9. java 替换回车换行符
  10. python动态创建对象属性_python – 动态创建类属性