美文网首页
重复值判断练习题

重复值判断练习题

作者: 郑明明 | 来源:发表于2017-06-19 08:40 被阅读85次
题目

请设计一个高效算法,判断数组中是否有重复值。必须保证额外空间复杂度为O(1)。
给定一个int数组A及它的大小n,请返回它是否有重复值。

思路

空间复杂度为O(1)的在三种非平方级的排序算法中只有堆排序,所以这里选择先使用堆排序进行排序,然后通过遍历过程前后置判断是否重复来解决

答案
void swapVector(int i, int j, vector<int> &A) {
    int temp = A[i];
    A[i] = A[j];
    A[j] = temp;
}

void adjustMaxHeap(vector<int> &A, int start, int end) {
    for (int current = start, left = start * 2 + 1; left <= end; current = left, left = left * 2 + 1) {
        if (left < end && A[left] < A[left + 1]) {
            left++;
        }
        if (A[current] < A[left]) {
            swapVector(current, left, A);
        } else {
            break;
        }
    }
}

void heapSort(vector<int> &A, int n) {
    // 构建大顶堆
    for (int i = n/2 - 1; i >= 0; i--) {
        adjustMaxHeap(A, i, n - 1);
    }
    
    // 调整大顶堆
    for (int i = n - 1; i > 0;) {
        swapVector(0, i, A);
        adjustMaxHeap(A, 0, --i);
    }
}

bool checkDuplicate(vector<int> a, int n) {
    // 利用迭代的堆排序算法进行排序O(logn * n)
    heapSort(a, n);
    
    // 判断是否有相同的值
    for (int i = 0; i < n - 1; i++) {
        if (a[i] == a[i + 1]) {
            return true;
        }
    }
    return false;
}

相关文章

  • 重复值判断练习题

    题目 请设计一个高效算法,判断数组中是否有重复值。必须保证额外空间复杂度为O(1)。给定一个int数组A及它的大小...

  • 重复值判断

    题目 请设计一个高效算法,判断数组中是否有重复值。必须保证额外空间复杂度为O(1)。给定一个int数组A及它的大小...

  • 图解Pandas重复值处理

    图解Pandas重复值处理 pandas中处理重复值使用的是两个函数: duplicated():判断是否有重复值...

  • 数据清洗函数

    数据清洗函数 duplicated() 判断序列元素是否重复, drop_ duplicates() #删除重复值...

  • 泛微实施记录(二)判断明细表数据重复

    重复数据判断 关键API WfForm.bindDetailFieldChangeEvent - 监听值变更事件 ...

  • python练习题

    1、简单的if判断语句 2、练习题 3、练习题 4、练习题 5、练习题 6、练习题 7、练习题 8、练习题 9、w...

  • 判断两个 Set 是否相同

    Set可以看做是增强型的数组,它内部的重复值会被自动剔除,而且Set中重复的判断标准是根据值,而不是根据引用地址,...

  • 数组去重的的方法

    1、使用new Set去重 2、使用for嵌套循环删除重复的值 3、indexof判断新数组是否包含这个相同值 ...

  • LeetCode: 存在重复元素

    存在重复元素 English Description 给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中...

  • [LeetCode][Python]217. 存在重复元素

    [LeetCode][Python]217. 存在重复元素 给定一个整数数组,判断是否存在重复元素。 如果任何值在...

网友评论

      本文标题:重复值判断练习题

      本文链接:https://www.haomeiwen.com/subject/oufgqxtx.html