首页 > 编程语言 >LeetCode算法笔记 217. 存在重复元素

LeetCode算法笔记 217. 存在重复元素

时间:2022-10-08 22:13:21浏览次数:46  
标签:217 nums int System 算法 数组 println LeetCode out

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。

示例 1:

输入:nums = [1,2,3,1]
输出:true
示例 2:

输入:nums = [1,2,3,4]
输出:false
示例 3:

输入:nums = [1,1,1,3,3,4,3,2,4,2]
输出:true

提示:

1 <= nums.length <= 105
-109 <= nums[i] <= 109

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/contains-duplicate

 

import junit.framework.TestCase;
import org.junit.Test;

import java.util.Arrays;
import java.util.HashSet;

public class LeetCode01 extends TestCase {

    /**
     * 时间复杂度:O(NlogN),其中N为数组的长度。需要对数组进行排序。
     * 空间复杂度:O(logN),其中N为数组的长度。注意我们在这里应当考虑递归调用栈的深度。
     */
    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(N),其中N为数组的长度。
     * 空间复杂度:O(N),其中N为数组的长度。
     */
    public boolean containsDuplicate2(int[] nums) {
        HashSet<Integer> hashSet = new HashSet<>();
        for (int num : nums) {
            if (!hashSet.add(num)) {
                return true;
            }
        }
        return false;
    }


    @Test
    public void test01() {
        int[] arr1 = {1, 2, 3, 1};
        int[] arr2 = {1, 2, 3, 4};
        int[] arr3 = {1, 1, 1, 3, 3, 4, 3, 2, 4, 2};

        System.out.println(containsDuplicate(arr1));
        System.out.println(containsDuplicate(arr2));
        System.out.println(containsDuplicate(arr3));
        System.out.println("=====================");
        System.out.println(containsDuplicate2(arr1));
        System.out.println(containsDuplicate2(arr2));
        System.out.println(containsDuplicate2(arr3));
    }
}

  

标签:217,nums,int,System,算法,数组,println,LeetCode,out
From: https://www.cnblogs.com/sueyyyy/p/16770438.html

相关文章

  • 20 -- 排序算法之基数排序
        举例说明:1、第一轮:按照每个元素的 个 位取出,然后将这个数放在对应的桶(数组)中;在按照这个桶的顺序,放入原来的数组中-->  2、第二轮:按照每个元素的十 ......
  • 03 栈与递归 | 数据结构与算法
    1.栈栈的定义:限定在表尾进行插入和删除操作的线性表空栈:不换任何元素的栈栈顶top:允许插入删除的一端栈的操作(连续设计)置空栈make_null_stack()#definemaxn......
  • SPFA算法思想简述
    首先定义数组\(d_i\)表示起点到\(i\)的距离(除起点外初始化为最大值),并维护一个队列。初始将起点入队,然后每一次取队头\(x\)并且松弛所有与\(x\)相连的边,同时如果能......
  • 最简单的算法- 二分查找
    java代码/***Createdbyfupengon2017/1/11.*/publicclassbinarySearchpublicstaticlongbinarySearch_a(long[]src,intkey){intlo=0;......
  • 小学二年级都能看懂的 KMP算法详解
    介绍先上一道模板题:P3375【模板】KMP字符串匹配(难以想象这只是一道黄题)(而manacher竟然是蓝题)大意就是给你两个字符串,问其中一个在另一个里面出现过几次。至于border什......
  • 牛客网高频算法题系列-BM17-二分查找-I
    牛客网高频算法题系列-BM17-二分查找-I题目描述请实现无重复数字的升序数组的二分查找给定一个元素升序的、无重复数字的整型数组nums和一个目标值target,写一个函......
  • leetcode 94. Binary Tree Inorder Traversal 二叉树的中序遍历(中等)
    一、题目大意给定一个二叉树的根节点root,返回它的中序遍历。示例1:输入:root=[1,null,2,3]输出:[1,3,2]示例2:输入:root=[]输出:[]示例3:输入:root=[......
  • 冒泡排序算法并调优
    算法步骤比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。......
  • 【路径规划】基于粒子群和遗传算法求解充电量和时间窗约束下的多AGV路径规划问题复mat
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 数组-算法-排序
    定义数组publicstaticvoidmain(String[]args){  //我们的数组必须初始化,才能使用  //动态出初始化:接受由我们指定的长度,由系统赋初始值  int[]arr=......