2239. 找到最接近 0 的數(shù)字
2023-03-07 21:15 作者:目標(biāo)力扣Knight | 我要投稿

概述: 找到絕對值最小的數(shù)字,當(dāng)絕對值相同時,取其中較大的數(shù)字
方法一:緩存 + 排序
遍歷整個 nums
數(shù)組,按照數(shù)對的方式---> 原數(shù):其絕對值 將其緩存到數(shù)組 ans 中,對數(shù) ans 數(shù)組編制排序,按照原數(shù)升序,其絕對值降序的方式排列,取得數(shù)組 ans 首元素中第二個位序的數(shù)字即可;
Python版本
? ? ? ? ?
C++版本
復(fù)雜度分析
時間復(fù)雜度:O(Nlogn)。一次遍歷與排序選擇其中復(fù)雜度較高的,
Python
默認(rèn)排序使用的是Timesort
。空間復(fù)雜度:O(N)。此處 n 指的是
nums
數(shù)組的長度。
方法二:滑動數(shù)組
分別用兩個變量保存上一次遍歷時最小距離和最大原數(shù),遍歷時,最小距離若減小則同時更新最大原數(shù)為當(dāng)前數(shù),若為發(fā)生變更,則需要分別考慮,若因當(dāng)前數(shù)大于上一次最小距離則直接跳過,若當(dāng)前值為上一次原數(shù)的絕對值則直接更新原數(shù)。
Python版本
?
C++版本
復(fù)雜度分析
時間復(fù)雜度:O(N)。此處的 n 指的是數(shù)組
nums
的長度。空間復(fù)雜度:O(1)。除返回值外無額外空間占用。
備注
此題可以抽象出
C++
語法通用模板,即:數(shù)對數(shù)組的申請,插入,讀出以及取得首元素第二個位序的值三種操作;