給你乙個按 非遞減順序 排序的整數陣列 nums,返回 每個數字的平方 組成的新陣列,要求也按 非遞減順序 排序。
要求時間複雜度 o(n)
示例 1: 輸入:nums = [-4,-1,0,3,10] 輸出:[0,1,9,16,100] 解釋:平方後,陣列變為 [16,1,0,9,100],排序後,陣列變為 [0,1,9,16,100]
示例 2: 輸入:nums = [-7,-3,2,3,11] 輸出:[4,9,9,49,121]
參考**隨想錄:problems/0977.有序陣列的平方.md · programmercarl/leetcode-master(**隨想錄出品) - gitee.com
總方法思路:利用雙指標,在陣列兩端設定初始指標,由於兩側的值必有最大值,故只需比較兩指標所指位置的值的大小,取較大者放置在新陣列末尾即可(重複迭代)
錯誤反思:自己第一寫時,非常不嚴謹地在遍歷陣列時同時進行了修改操作(而不是僅僅讀取資料複製到新陣列中),導致了非常低階的錯誤,且沒有意識到(太菜了太菜了)
977 有序陣列的平方
利用 陣列 nums 已經按照公升序排序 這個條件。顯然,如果陣列 nums 中的所有數都是非負數,那麼將每個數平方後,陣列仍然保持公升序 如果陣列 nums 中的所有數都是負數,那麼將每個數平方後,陣列會保持降序。因此就可以使用歸併的方法進行排序。使用兩個指標分別指向位置 0 和 n 1,每次比較...
977 有序陣列的平方
題意理解 給定遞增陣列,把陣列元素平方後遞增輸出。思路 可能含有負數,但是存在乙個負數和正數的分界線neg。利用雙指標,從neg和neg 1向兩邊遍歷,把小的push進ans中,直至到達一邊的邊界,這時把另一邊剩下的順序push進ans中就可以了。麻煩的地方在於要做邊界 檢查。另一種反向思路 雙指標...
977 有序陣列的平方
給你乙個按 非遞減順序 排序的整數陣列 nums,返回 每個數字的平方 組成的新陣列,要求也按 非遞減順序 排序。示例 1 輸入 nums 4,1,0,3,10 輸出 0,1,9,16,100 解釋 平方後,陣列變為 16,1,0,9,100 排序後,陣列變為 0,1,9,16,100 示例 2 輸...