有序陣列每個數平方後,不同數字的個數?O n

2021-09-06 18:28:57 字數 697 閱讀 9742

此乃一道筆試題,當時的確也做出來啦。(但是在細節上還是出錯啦,對多次重複出現的數字可能會重複計數,沒有記錄上次刪除的元素)

如題,有序陣列,可以知道平方之後在兩邊的資料較大,中間的資料較小。

因此可以使用兩個下標,從兩邊向中間掃瞄。將絕對值大的數字刪掉,計數即可,並記錄剛才刪除的數值的絕對值,以免出現多次相同的資料,重複計數的問題。

具體看完整**:

1 #include 2 #include 3 #include 4

using

namespace

std;56

int squareuniquenum(vector &ver)

22 i++;23}

24else

29 j--;30}

31}32return

num;33}

3435

intmain()

36);

38int num = squareuniquenum(ver); ///

求有序陣列中數字平方後,消重結果中數字的個數

39 cout

40return0;

41 }

有序陣列的平方

給你乙個按 非遞減順序 排序的整數陣列 nums,返回 每個數字的平方 組成的新陣列,要求也按 非遞減順序 排序。示例 1 輸入 nums 4,1,0,3,10 輸出 0,1,9,16,100 解釋 平方後,陣列變為 16,1,0,9,100 排序後,陣列變為 0,1,9,16,100 示例 2 輸...

977 有序陣列的平方

利用 陣列 nums 已經按照公升序排序 這個條件。顯然,如果陣列 nums 中的所有數都是非負數,那麼將每個數平方後,陣列仍然保持公升序 如果陣列 nums 中的所有數都是負數,那麼將每個數平方後,陣列會保持降序。因此就可以使用歸併的方法進行排序。使用兩個指標分別指向位置 0 和 n 1,每次比較...

977 有序陣列的平方

題意理解 給定遞增陣列,把陣列元素平方後遞增輸出。思路 可能含有負數,但是存在乙個負數和正數的分界線neg。利用雙指標,從neg和neg 1向兩邊遍歷,把小的push進ans中,直至到達一邊的邊界,這時把另一邊剩下的順序push進ans中就可以了。麻煩的地方在於要做邊界 檢查。另一種反向思路 雙指標...