題目:求解乙個有序陣列不同平方值的個數,這裡平方值只有0,1兩種情況,返回2;這裡拼房族有0,1,4,9共4中情況,返回4。
要求:時間複雜度o(n)空間複雜度o(1)
分析:有序陣列普遍是利用雙指標問題求解
其次,map(或雜湊)、二分
跟指定target類似,這裡的target=0.每次檢查頭尾指標的和是等於0、大於0還是小於0.根據這3中情況分析。注意數字可能重複,需要去重。
//返回平方後不同元素的個數
int diffsqurenum(const vector&nums)
else
if(nums[l]+nums[r] > 0
)
else
}return
cnt;
}
有序陣列每個數平方後,不同數字的個數?O n
此乃一道筆試題,當時的確也做出來啦。但是在細節上還是出錯啦,對多次重複出現的數字可能會重複計數,沒有記錄上次刪除的元素 如題,有序陣列,可以知道平方之後在兩邊的資料較大,中間的資料較小。因此可以使用兩個下標,從兩邊向中間掃瞄。將絕對值大的數字刪掉,計數即可,並記錄剛才刪除的數值的絕對值,以免出現多次...
樹樁陣列維護區間不同值的個數
題目 結果只有80分,不夠學了一招。將問題轉化為離線問題。我們先將詢問按右節點公升序排序。然後對於每乙個值,我們可以肯定的是,只有最靠近詢問右端的值才可能起作用。case 1 如果詢問不包括某個值。那麼這個值,對答案沒有影響 case 2 包括的話,那麼至少包括1個這樣的值,而我們詢問的是不同的個數...
頭條面試題 統計有序陣列裡平方和的數目
給你乙個有序整數陣列,陣列中的數可以是正數 負數 零,請實現乙個函式,這個函式返回乙個整數 返回這個陣列所有數的平方值中有多少種不同的取值。舉例 nums 那麼你應該返回的是 1。因為這個陣列所有數的平方取值都是1,只有一種取值。nums 你應該返回4,因為nums陣列所有元素的平方值一共4種取值 ...