美文网首页
2_14重复值判断

2_14重复值判断

作者: X_Y | 来源:发表于2017-09-06 17:01 被阅读8次

请设计一个高效算法,判断数组中是否有重复值。必须保证额外空间复杂度为O(1)。

给定一个int数组A及它的大小n,请返回它是否有重复值。

测试样例:
输入:[1,2,3,4,5,5,6],7
返回:true

class Checker {
public:
    void swap(vector<int> &A,int i,int j)
    {
        int temp;
        temp=A[i];
        A[i]=A[j];
        A[j]=temp;
    }
    // 调整堆, adjusting_node是当前待调整的节点,last_node是最后一个节点
    void adjust_haep(vector<int> &A, int adjusting_node, int last_node)
    {
       int parent =  adjusting_node, child = 2 * adjusting_node + 1;
       int curr_value = A[adjusting_node];
       while(child <= last_node){
           if(child < last_node && A[child] < A[child+1]){
               ++child;
           }
           if(curr_value < A[child]){
               A[parent] = A[child];
               parent = child;
               child = 2*parent + 1;
           }
           else{
               break;
           }
       }
       A[parent] = curr_value;
    }

    bool checkDuplicate(vector<int> a, int n) {
        // write code here
        // 生成堆,从最后节点的parent开始
        for(int i=n/2-1; i>=0; --i){
            adjust_haep(a, i, n-1);
        }
        // 每次A[0]和最后的节点交换,然后调整堆 
        for(int i=n-1; i>0; --i){
            swap(a, i, 0);
            adjust_haep(a, 0, i-1);
            if(i<n-1 && a[i] == a[i+1]){
                return true;
            }
        }
        return false;
    }
};

相关文章

  • 2_14重复值判断

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

  • 重复值判断

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

  • 图解Pandas重复值处理

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

  • 数据清洗函数

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

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

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

  • 重复值判断练习题

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

  • 判断两个 Set 是否相同

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

  • 数组去重的的方法

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

  • LeetCode: 存在重复元素

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

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

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

网友评论

      本文标题:2_14重复值判断

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