leetcode刷题--基础数组--判断存在重复(C)

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

思想:(1)最暴力直接的做法是双指针法,一一比较。

bool containsDuplicate(int* nums, int numsSize) {
    
    for(int i=0; i

(2)也可以先对数组进行排序,然后找重复值。排序操作调用各语言自己封装的函数比自己写快排效果好得多。c中的qsort, c++中的sort。

//  c++实现
public static boolean containsDuplicate(int[] nums) {
	Arrays.sort(nums);
    for (int i = 1 ; i < nums.length ; i++) {
        if (nums[i - 1] == nums[i])
            return true;
    }
    return false;
}

(3)Hash法 或者 位图法,时间复杂度 和 空间复杂度 都是 O(n)。

你可能感兴趣的:(leetcode刷题)