ARTS打卡第六周

ARTS打卡第六周

Algorithm:每周至少做一個 leetcode 的算法題

31. 下一個排列

實現(xiàn)獲取 下一個排列 的函數(shù)喇澡,算法需要將給定數(shù)字序列重新排列成字典序中下一個更大的排列馅而。
如果不存在下一個更大的排列猖毫,則將數(shù)字重新排列成最小的排列(即升序排列)。
必須 原地 修改伴挚,只允許使用額外常數(shù)空間呛每。

示例 1:
輸入:nums = [1,2,3]
輸出:[1,3,2]

示例 2:
輸入:nums = [3,2,1]
輸出:[1,2,3]

示例 3:
輸入:nums = [1,1,5]
輸出:[1,5,1]

示例 4:
輸入:nums = [1]
輸出:[1]

提示:
1 <= nums.length <= 100
0 <= nums[i] <= 100

代碼:

public void nextPermutation(int[] nums) {
    int n = nums.length;
    if (n == 0) {
        return;
    }

    // 第1步缩滨,尋找最后一個正序呐萨,尋找方法:從后向前找。
    int i = n - 1;
    while (i > 0 && nums[i - 1] >= nums[i]) {
        i--;
    }

    // i==0,表示未找到最后的排列
    if (i != 0) {
        // 第2步底哥,從后往前找一個比array[i-1]大的第一個數(shù)字咙鞍。
        int j = n - 1;
        while (j > i && nums[j] <= nums[i - 1]) {
            j--;
        }

        // 第3步,交換array[i-1],array[j]
        int tmp = nums[i - 1];
        nums[i - 1] = nums[j];
        nums[j] = tmp;
    }

    // 第4步趾徽,把i及其后面的序列反序续滋。
    while (i < n - 1) {
        int tmp = nums[i];
        nums[i] = nums[n - 1];
        nums[n - 1] = tmp;
        i++;
        n--;
    }
}

官方解答:

void nextPermutation(vector<int>& nums) {
    int i = nums.size() - 2;
    while (i >= 0 && nums[i] >= nums[i + 1]) {
        i--;
    }
    if (i >= 0) {
        int j = nums.size() - 1;
        while (j >= 0 && nums[i] >= nums[j]) {
            j--;
        }
        swap(nums[i], nums[j]);
    }
    reverse(nums.begin() + i + 1, nums.end());
}

作者:LeetCode-Solution
鏈接:https://leetcode-cn.com/problems/next-permutation/solution/xia-yi-ge-pai-lie-by-leetcode-solution/
來源:力扣(LeetCode)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)孵奶,非商業(yè)轉(zhuǎn)載請注明出處疲酌。

Review:閱讀并點評至少一篇英文技術(shù)文章

[虛擬的virtual-delete運行時出現(xiàn)什么情況]](https://eli.thegreenplace.net/2015/c-deleting-destructors-and-virtual-operator-delete/)

項目中幾乎沒有使用自定義 operator delete 的情況,所以對此不算了解了袁;不過讀了effective C++之后朗恳,里面有一章表示 operator new需要和operator delete需要一一對應(yīng),我可能需要再重新讀一遍了载绿。

Tip:學(xué)習(xí)至少一個技術(shù)技巧

class A
{
    public:

        void Func()
        {
            printf("this is a function");
        }

        virtual void Func2()
        {
            printf("this is function2");
        }
}

A* test = nullptr;
test.Func();
test.Func2();

如此代碼會產(chǎn)生什么后果粥诫?!

成員函數(shù)不崩潰崭庸,虛函數(shù)崩潰

成員函數(shù)傳入this指針為空臀脏,但函數(shù)內(nèi)部未使用this指針,一切照常運行冀自。執(zhí)行虛函數(shù)時,成員包含的虛函數(shù)指針為空秒啦,導(dǎo)致無法找到函數(shù)調(diào)用點熬粗,最終空指針崩潰。

std::string 的 += ("1111\0")
std::string 的 append("1111\0",5)

兩個運行的結(jié)果不一致余境,有興趣的可以自行研究一下驻呐。

Share:分享一篇有觀點和思考的技術(shù)文章

工作中遇到了肉眼觀看的兩個字符串灌诅,但是卻無法匹配的問題。
仔細對比后含末,發(fā)現(xiàn)其中一個長度為19猜拾,另一個長度為20,多了一個\0的存在佣盒。

例如:

str 看起來是 _T("1\0");
str2 看起來是 _T("1");

其實上面兩個字符幾乎沒有差別挎袜,比較的時候也應(yīng)該時正確的,比如使用 strcmp的時候肥惭,在雙方遇到\0的時候停止比較盯仪,兩者會返回相等,不過使用str的==判斷蜜葱,會不等全景,因為str的==符號在運行時,先比較兩者的長度牵囤,后比較兩者的數(shù)據(jù)爸黄,所以雖然值看起來是相同的,不過由于字符串的長度不相等揭鳞,導(dǎo)致直接返回false炕贵,產(chǎn)生外部邏輯上的問題。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末汹桦,一起剝皮案震驚了整個濱河市鲁驶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舞骆,老刑警劉巖钥弯,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異督禽,居然都是意外死亡脆霎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門狈惫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來睛蛛,“玉大人,你說我怎么就攤上這事胧谈∫渖觯” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵菱肖,是天一觀的道長客冈。 經(jīng)常有香客問我,道長稳强,這世上最難降的妖魔是什么场仲? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任和悦,我火速辦了婚禮,結(jié)果婚禮上渠缕,老公的妹妹穿的比我還像新娘鸽素。我一直安慰自己,他們只是感情好亦鳞,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布馍忽。 她就那樣靜靜地躺著,像睡著了一般蚜迅。 火紅的嫁衣襯著肌膚如雪舵匾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天谁不,我揣著相機與錄音坐梯,去河邊找鬼。 笑死刹帕,一個胖子當著我的面吹牛吵血,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播偷溺,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼蹋辅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了挫掏?” 一聲冷哼從身側(cè)響起侦另,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎尉共,沒想到半個月后褒傅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡袄友,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年殿托,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剧蚣。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡支竹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鸠按,到底是詐尸還是另有隱情礼搁,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布目尖,位于F島的核電站叹坦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏卑雁。R本人自食惡果不足惜募书,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望测蹲。 院中可真熱鬧莹捡,春花似錦、人聲如沸扣甲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琉挖。三九已至启泣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間示辈,已是汗流浹背寥茫。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留矾麻,地道東北人纱耻。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像险耀,于是被迫代替她去往敵國和親弄喘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345