第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

處理 TreeSet 中的重復(fù)項

處理 TreeSet 中的重復(fù)項

皈依舞 2023-08-23 17:08:04
我正在解決一個問題,我們必須找到每個窗口(滑動窗口)的中位數(shù)。我知道樹集不允許重復(fù)。因此,我編寫了一個自定義比較器來使用元素索引而不是值。下面是代碼:-class Solution {     static int a[];     static TreeSet<Integer> minheap;     static TreeSet<Integer> maxheap;     static class comp implements Comparator<Integer>     {         public int compare(Integer x,Integer y)         {             if(a[x]<a[y]) return -1;             if(a[x]>a[y]) return 1;             return 1;         }     }    static class comp1 implements Comparator<Integer>     {         public int compare(Integer x,Integer y)         {             if(a[x]>a[y]) return -1;             if(a[x]<a[y]) return 1;             return 1;         }     }     public void balance()     {         if(maxheap.size()>minheap.size()+1)         {             int temp=maxheap.pollFirst();             minheap.add(temp);         }     }     public void addNum(int num) {        maxheap.add(num);        balance();        if(!maxheap.isEmpty() && !minheap.isEmpty() && a[maxheap.first()]>a[minheap.first()])        {            int temp1=minheap.pollFirst();            int temp2=maxheap.pollFirst();            minheap.add(temp2);            maxheap.add(temp1);        }    }    public double findMedian() {        int size=maxheap.size()+minheap.size();        if(size%2==1) return a[maxheap.first()];        else return ((double)a[maxheap.first()] + a[minheap.first()])/2;    }    public double[] medianSlidingWindow(int[] nums, int k) {        minheap=new TreeSet<Integer>(new comp());        maxheap=new TreeSet<Integer>(new comp1());        a=new int[nums.length];        for(int i=0;i<nums.length;i++)            a[i]=nums[i];        double ans[]=new double[nums.length-k+1];        int j=0;        for(int i=0;i<k;i++)            addNum(i);在兩個比較器中,當(dāng)兩個值相同時我返回 1 以打破聯(lián)系,否則,如果我返回 0,treeset 會將它們視為相同。如果我使用該語句,則行為會很奇怪。但是,如果我在兩個值相等時將“return 1”替換為“return yx”,則效果很好。有人可以幫助我理解這種行為嗎?
查看完整描述

1 回答

?
HUH函數(shù)

TA貢獻(xiàn)1836條經(jīng)驗 獲得超4個贊

您的語句破壞了's方法return 1;的約定,因為這意味著 if , will return并且也將 return ,并且違反了要求。Comparatorcomparea[x]==a[y]compare(x,y)1compare(y,x)1sgn(compare(x, y)) ==-sgn(compare(y, x))



查看完整回答
反對 回復(fù) 2023-08-23
  • 1 回答
  • 0 關(guān)注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號