LeetCode存在重复元素快乐做题

简介: LeetCode存在重复元素快乐做题

一:题目描述

       给定一个整数数组,判断是否存在重复元素。

如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。

二:解决办法

       1:两层for循环,暴力解法

public class Solution {
    public bool ContainsDuplicate(int[] nums) {
 for (int i = 0; i < nums.Length; i++)
            {
                int number = nums[i];
                for (int j = i+1; j < nums.Length; j++)
                {
                    if (number == nums[j])
                    {
                        return true;
                    }
                }
            }
            return false;
    }
}

第一层循环将数找出来,第二次进行比较,时间复杂度为n*n。

2:HashTable,不能有同一键值数据

public class Solution {
    public bool ContainsDuplicate(int[] nums) {
             Hashtable hashtable = new Hashtable();
            for (int i = 0; i < nums.Length; i++)
            {
                try
                {
                    hashtable.Add(nums[i], i);
                }
                catch (Exception)
                {
                    return true;
                }
            }
            return false;
    }
}

使用了一层循环,效率变高。

3:List集合

public class Solution {
    public bool ContainsDuplicate(int[] nums) {
    ArrayList arrayList = new ArrayList();
            for (int i = 0; i < nums.Length; i++)
            {
                if ( arrayList.Count == 0)
                {
                    arrayList.Add(nums[0]);
                }
                if (!arrayList.Contains(nums[i]) )
                {
                    arrayList.Add(nums[i]);
                }
            }
            if (arrayList.Count<nums.Length)
            {
                return true;
            }
            return false;
        }
}

4:排序后将相邻两个比较

public bool ContainsDuplicate(int[] nums) {
    Array.Sort(nums);
            for (int i = 0; i < nums.Length-1; i++)
            {
                if (nums[i]==nums[i+1])
                {
                    return true;
                }
            }
            return false;
    }
目录
相关文章
|
5月前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
56 1
|
5月前
【LeetCode 27】347.前k个高频元素
【LeetCode 27】347.前k个高频元素
59 0
|
7月前
|
存储 算法
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
|
5月前
【LeetCode 06】203.移除链表元素
【LeetCode 06】203.移除链表元素
45 0
|
5月前
【LeetCode-每日一题】移除元素
【LeetCode-每日一题】移除元素
44 0
|
7月前
|
算法 索引
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置
这篇文章介绍了LeetCode第34题"在排序数组中查找元素的第一个和最后一个位置"的解题方法,通过使用双指针法从数组两端向中间同时查找目标值,有效地找到了目标值的首次和最后一次出现的索引位置。
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置
|
7月前
|
Python
【Leetcode刷题Python】剑指 Offer II 082. 含有重复元素集合的组合
解决LeetCode平台《剑指 Offer II 082. 含有重复元素集合的组合》题目的Python代码实现,通过深度优先搜索算法找出所有和为特定目标值的数字组合,并在搜索过程中通过排序和跳过重复元素来避免解集中出现重复组合。
57 2
|
7月前
|
算法
LeetCode第27题移除元素
这篇文章介绍了LeetCode第27题"移除元素"的解题方法,通过使用双指针技巧,有效移除数组中特定值的元素并返回新数组的长度。
|
7月前
|
算法 索引 Python
【Leetcode刷题Python】34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)
解决LeetCode "在排序数组中查找元素的第一个和最后一个位置" 问题的方法。第一种方法是使用两次二分查找,首先找到目标值的最左边界,然后找到最右边界。第二种方法是利用Python的list.index()方法,先正序找到起始位置,再逆序找到结束位置,并给出了两种方法的Python实现代码。
91 0
|
7月前
|
Python
【Leetcode刷题Python】203.移除链表元素
文章提供了三种删除链表中特定值节点的方法:迭代法、虚拟节点迭代删除法和递归法,并给出了相应的Python实现代码。
45 0