【LeetCode977.有序數(shù)組的平方】——雙指針?lè)?/h1>

977.有序數(shù)組的平方

給你一個(gè)按 非遞減順序 排序的整數(shù)數(shù)組 nums,返回 每個(gè)數(shù)字的平方 組成的新數(shù)組川陆,要求也按 非遞減順序 排序。

示例 1:

輸入:nums = [-4,-1,0,3,10]
輸出:[0,1,9,16,100]
解釋:平方后,數(shù)組變?yōu)?[16,1,0,9,100]遵蚜,排序后苦始,數(shù)組變?yōu)?[0,1,9,16,100]

示例 2:

輸入:nums = [-7,-3,2,3,11]
輸出:[4,9,9,49,121]

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums 已按 非遞減順序 排序

進(jìn)階:

  • 請(qǐng)你設(shè)計(jì)時(shí)間復(fù)雜度為 O(n) 的算法解決本問(wèn)題

題目鏈接:

思路:

這道題拿到手寞钥,第一反應(yīng)肯定是,可以使用最簡(jiǎn)單的方法陌选,將數(shù)組中的所有元素進(jìn)行平方處理理郑,構(gòu)建新數(shù)組,再進(jìn)行排序柠贤。

然而香浩,這肯定不是最優(yōu)解,這道題同樣也可以嘗試使用雙指針?lè)ㄟM(jìn)行求解臼勉。

暴力求解:

將每個(gè)數(shù)平方后邻吭,再進(jìn)行排序,這里不光要用到一個(gè)for循環(huán)宴霸,還需要用到sort函數(shù)囱晴,所以時(shí)間復(fù)雜度為O(n + nlogn)膏蚓,可以看作是O(nlogn)

注:運(yùn)用sort函數(shù)需要加上algorithm頭文件

class Solution {
public:
   //暴力平方
    vector<int> sortedSquares(vector<int>& A) {
        for (int i = 0; i < A.size(); i++) {
            A[i] *= A[i]; //將數(shù)組中每個(gè)數(shù)平方
        }
        sort(A.begin(), A.end()); // 快速排序
        return A;
    }
};

雙指針?lè)ǎ?/h2>

對(duì)于數(shù)組,雙指針?lè)ㄊ且环N十分常用的方法畸写,而這道題我們也可以嘗試使用雙指針?lè)ㄟM(jìn)行求解驮瞧。

這里有個(gè)十分關(guān)鍵的點(diǎn),就是:原本的數(shù)組本身就是有序的枯芬,是一個(gè)非遞減的數(shù)組论笔,那么即使數(shù)組中元素有正有負(fù),絕對(duì)值最大的元素肯定是在數(shù)組的兩端的千所,即數(shù)組平方的最大值是在數(shù)組的兩端的狂魔。

所以我們可以使用兩個(gè)雙指針i,j一個(gè)指向起始位置,一個(gè)指向數(shù)組的末尾淫痰。

定義一個(gè)新的數(shù)組result用于儲(chǔ)存新的有序平方后的元素最楷。

這里有兩條重要的判斷語(yǔ)句:

  • 如果A[i] * A[i] < A[j] * A[j] 那么result[k--] = A[j] * A[j];
  • 如果A[i] * A[i] >= A[j] * A[j] 那么result[k--] = A[i] * A[i]; 待错。
class Solution {
public:
 //雙指針
    vector<int> sortedSquares(vector<int>& A) {
        int k = A.size() - 1; //指向新數(shù)組的末尾籽孙,從后往前賦值
        vector<int> result(A.size(), 0);
        for (int i = 0, j = A.size() - 1; i <= j;) { // 注意這里要i <= j,因?yàn)樽詈笠幚韮蓚€(gè)元素
            if (A[i] * A[i] < A[j] * A[j]) { //判斷條件1:尾部元素更大
                result[k--] = A[j] * A[j];
                j--;
            }
            else {
                result[k--] = A[i] * A[i]; //判斷條件2:頭部元素更大
                i++;
            }
        }
        return result;
    }
};

時(shí)間復(fù)雜度為O(n)火俄。
后續(xù)也會(huì)堅(jiān)持更新我的LeetCode刷題筆記犯建,歡迎大家關(guān)注我,一起學(xué)習(xí)烛占。
如果這篇文章對(duì)你有幫助胎挎,或者你喜歡這篇題解,可以給我點(diǎn)個(gè)贊哦忆家。
CSDN同步更新犹菇,歡迎關(guān)注我的博客:一粒蛋TT的博客_CSDN博客-LeetCode學(xué)習(xí)筆記,HTML+CSS+JS,數(shù)據(jù)結(jié)構(gòu)領(lǐng)域博主

往期回顧:
LeetCode844.比較含退格的字符串
LeetCode283.移動(dòng)零
LeetCode27.移除元素
LeetCode26.刪除有序數(shù)組中的重復(fù)項(xiàng)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者

  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市芽卿,隨后出現(xiàn)的幾起案子揭芍,更是在濱河造成了極大的恐慌,老刑警劉巖卸例,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件称杨,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡筷转,警方通過(guò)查閱死者的電腦和手機(jī)姑原,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)呜舒,“玉大人锭汛,你說(shuō)我怎么就攤上這事。” “怎么了唤殴?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵般婆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我朵逝,道長(zhǎng)蔚袍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任配名,我火速辦了婚禮啤咽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘段誊。我一直安慰自己闰蚕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布连舍。 她就那樣靜靜地躺著,像睡著了一般涩哟。 火紅的嫁衣襯著肌膚如雪索赏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天贴彼,我揣著相機(jī)與錄音潜腻,去河邊找鬼。 笑死器仗,一個(gè)胖子當(dāng)著我的面吹牛融涣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播精钮,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼威鹿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了轨香?” 一聲冷哼從身側(cè)響起忽你,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎臂容,沒想到半個(gè)月后科雳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脓杉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年糟秘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片球散。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尿赚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吼畏,我是刑警寧澤督赤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站泻蚊,受9級(jí)特大地震影響躲舌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜性雄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一没卸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秒旋,春花似錦约计、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至细卧,卻和暖如春尉桩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贪庙。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工蜘犁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人止邮。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓这橙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親导披。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屈扎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容