【閱讀與算法】摘錄&有序數(shù)組的平方

摘錄

一個(gè)有判別力的思考者要超越自己已有的信息,發(fā)掘隱藏在信息表面下的真正含義,以理解信息的本質(zhì)為目標(biāo)而不是被表面的印象和風(fēng)格所迷惑。以下是一些思考的技巧:

  • 避免把相關(guān)關(guān)系推論為因果關(guān)系
  • 要求關(guān)鍵術(shù)語(yǔ)和概念有操作性定義,使其含義達(dá)成一致意見(jiàn)
  • 對(duì)已提出的解釋尋求其他可能的解釋,特別是那些有利于提案人的解釋
  • 質(zhì)疑關(guān)于效果的聲明,考慮到安慰劑效應(yīng),辦法是找到比較的基準(zhǔn)
  • 成為思想開(kāi)明而又善于質(zhì)疑的人,認(rèn)識(shí)到大多數(shù)結(jié)論都具有嘗試性和不確定性;尋找新的證據(jù)來(lái)減少你的不確定性,同時(shí)使自己能不斷變革和修正自己的觀點(diǎn)
  • 敢于向流傳廣泛但證據(jù)不足的觀點(diǎn)挑戰(zhàn),形成理性的主見(jiàn),避免盲目從眾

有序數(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)題

方法一

  • 方法:結(jié)合向量基礎(chǔ)用法得出
  • 代碼
vector<int> sortedSquares(vector<int>& nums) {
    vector<int> newArr(nums); // 這種復(fù)制的話不會(huì)影響原數(shù)組
    for (int i = 0; i < nums.size(); i++) {
        newArr[i] = nums[i] * nums[i];
    }
    sort(newArr.begin(), newArr.end());
    return newArr;
}

時(shí)間復(fù)雜度:基于sort
空間復(fù)雜度:基于sort

方法二

  • 方法:雙指針?lè)ㄖ笥抑羔樂(lè)ǎ^尾指針?lè)ǎ?/p>

  • 過(guò)程:可以參考大佬的動(dòng)圖

    頭尾指針?lè)?/div>

  • 代碼

vector<int> sortedSquares(vector<int>& nums) {
    vector<int> newArr(nums.size(), 0);
    int left = 0;
    int right = nums.size() - 1;
    int i = nums.size() - 1;
    for ( ; left <= right; ) { // 可以通過(guò)遍歷小數(shù)組,確定循環(huán)終止條件是否要帶等號(hào)
        if (nums[left] * nums[left] < nums[right] * nums[right]) {
            newArr[i] = nums[right] * nums[right];
            right--;
        } else {
            newArr[i] = nums[left] * nums[left];
            left++;
        }
        i--;
    }
    return newArr;
}

時(shí)間復(fù)雜度:O(n)
空間復(fù)雜度:O(n)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容