国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【算法挨揍日記】day02——雙指針?biāo)惴╛快樂數(shù)、盛最多水的容器

這篇具有很好參考價值的文章主要介紹了【算法挨揍日記】day02——雙指針?biāo)惴╛快樂數(shù)、盛最多水的容器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【算法挨揍日記】day02——雙指針?biāo)惴╛快樂數(shù)、盛最多水的容器,算法挨揍日記,Leetcode,算法,c++,職場和發(fā)展

?202. 快樂數(shù)?

202.?快樂數(shù)https://leetcode.cn/problems/happy-number/

題目:

編寫一個算法來判斷一個數(shù)?n?是不是快樂數(shù)。

「快樂數(shù)」?定義為:

  • 對于一個正整數(shù),每一次將該數(shù)替換為它每個位置上的數(shù)字的平方和。
  • 然后重復(fù)這個過程直到這個數(shù)變?yōu)?1,也可能是?無限循環(huán)?但始終變不到 1。
  • 如果這個過程?結(jié)果為?1,那么這個數(shù)就是快樂數(shù)。

如果?n?是?快樂數(shù)?就返回?true?;不是,則返回?false?。

【算法挨揍日記】day02——雙指針?biāo)惴╛快樂數(shù)、盛最多水的容器,算法挨揍日記,Leetcode,算法,c++,職場和發(fā)展

?解題思路:

?我們先通過這兩個測試用例來看看是什么情況

【算法挨揍日記】day02——雙指針?biāo)惴╛快樂數(shù)、盛最多水的容器,算法挨揍日記,Leetcode,算法,c++,職場和發(fā)展

?我們發(fā)現(xiàn)不管是19還是2都會形成一個環(huán)狀結(jié)構(gòu)(19的環(huán)狀結(jié)構(gòu)內(nèi)都是1)

那這樣我們就可以使用快慢指針來操作!?。?/p>

定義一個slow和fast,slow一次走一步,fast一次走兩步

他們一定會相遇的,只不過相遇的時候會有兩種情況,相遇的數(shù)是1或者不是1

那為什么一定會形成環(huán)狀結(jié)構(gòu)呢?我們來簡單論證一下!

鴿巢原理:就是當(dāng)n個巢穴,n+1個鴿子的時候,一定至少有一個巢穴的鴿子>1

我們注意一下n的范圍,n最大為2的31次方,也就是2億多(10位數(shù)),那我們將它放大10個9(也就是最大的那個10位數(shù),我懶得打9了),也就是說,它最多就是10個9,經(jīng)過f操作最大就是9^2*10=810,也就是相當(dāng)于我們最多有810個位置,我們處理813次的f,肯定會有重復(fù)的數(shù)出現(xiàn)!

那同理:

【算法挨揍日記】day02——雙指針?biāo)惴╛快樂數(shù)、盛最多水的容器,算法挨揍日記,Leetcode,算法,c++,職場和發(fā)展

?

解題代碼:

class Solution {
public:
    int f(int n)
    {
        int arr[11] = { 0 };
        int i = 1;
        for (int i = 1; i < 11; ++i)
        {
            if (n < 10)
            {
                arr[i] = n;
                break;
            }
            arr[i] = n % 10;
            n = n / 10;
        }
        int x = 0;
        for (int i = 1; i < 11; ++i)
        {
            x += (arr[i] * arr[i]);
        }
        return x;
    }
    bool isHappy(int n) {
        //快慢雙指針
        int slow = n;
        int fast = n;
        //更新slow和fast
        slow = f(slow);
        fast = f(fast);
        fast = f(fast);
        if (slow == fast && slow == 1)return true;
        while (slow != fast)
        {
            //更新slow和fast
            slow = f(slow);
            fast = f(fast);
            fast = f(fast);
        }
        if (slow == 1)
            return true;
        else
            return false;
    }
};

11.?盛最多水的容器

11.?盛最多水的容器https://leetcode.cn/problems/container-with-most-water/

題目描述:

給定一個長度為?n?的整數(shù)數(shù)組?height?。有?n?條垂線,第?i?條線的兩個端點是?(i, 0)?和?(i, height[i])?。

找出其中的兩條線,使得它們與?x?軸共同構(gòu)成的容器可以容納最多的水。

返回容器可以儲存的最大水量。

說明:你不能傾斜容器。

【算法挨揍日記】day02——雙指針?biāo)惴╛快樂數(shù)、盛最多水的容器,算法挨揍日記,Leetcode,算法,c++,職場和發(fā)展

解題思路:

體積V=h*w,當(dāng)我們利用雙指針從左右兩邊向中間逼近,w一定是減小的,只有當(dāng)h增大才可能增大

解題代碼:

class Solution {
public:
    int maxArea(vector<int>& height) {
        int left=0;
        int right=height.size()-1;
        int ret=0;
        while(left<right)
        {
            int v=min(height[left],height[right])*(right-left);
            ret=max(v,ret);
            if(height[left] < height[right]) left++;
            else right--; 
        }
        return ret;
    }
};

?

?文章來源地址http://www.zghlxwxcb.cn/news/detail-664913.html

到了這里,關(guān)于【算法挨揍日記】day02——雙指針?biāo)惴╛快樂數(shù)、盛最多水的容器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【算法——雙指針】LeetCode 11 盛最多水的容器

    【算法——雙指針】LeetCode 11 盛最多水的容器

    題目描述: 解題思路: ????????如圖所示: ????????1、我們考慮相距最遠(yuǎn)的兩個柱子所能容納水的面積。寬度是兩根柱子之間的距離8;高度取決于兩根柱子之間較短的那個,即左邊柱子的高度3。水的面積就是3×8=24。 ????????2、如果選擇固定一根柱子,另外一根

    2024年02月12日
    瀏覽(21)
  • 【算法專題突破】雙指針 - 盛最多水的容器(4)

    【算法專題突破】雙指針 - 盛最多水的容器(4)

    目錄 1. 題目解析 2. 算法原理 3. 代碼編寫 寫在最后: 題目鏈接:11. 盛最多水的容器 - 力扣(Leetcode)? ?這道題目也不難理解, 兩邊的柱子的盛水量是根據(jù)短的那邊的柱子決定的, 而盛水量就是短的柱子的高度 * 寬度即可。 ?這道題可以用暴力枚舉,兩層for循環(huán),肯定是可

    2024年02月10日
    瀏覽(20)
  • 【算法|雙指針系列No.4】leetcode11. 盛最多水的容器

    【算法|雙指針系列No.4】leetcode11. 盛最多水的容器

    個人主頁:兜里有顆棉花糖 歡迎 點贊?? 收藏? 留言? 加關(guān)注??本文由 兜里有顆棉花糖 原創(chuàng) 收錄于專欄【手撕算法系列專欄】【LeetCode】 ??本專欄旨在提高自己算法能力的同時,記錄一下自己的學(xué)習(xí)過程,希望對大家有所幫助 ??希望我們一起努力、成長,共同進(jìn)步。

    2024年02月06日
    瀏覽(23)
  • 【算法挨揍日記】day01——雙指針?biāo)惴╛移動零、 復(fù)寫零

    【算法挨揍日記】day01——雙指針?biāo)惴╛移動零、 復(fù)寫零

    283.?移動零 https://leetcode.cn/problems/move-zeroes/ 題目: 給定一個數(shù)組? nums ,編寫一個函數(shù)將所有? 0 ?移動到數(shù)組的末尾,同時保持非零元素的相對順序。 請注意 ?,必須在不復(fù)制數(shù)組的情況下原地對數(shù)組進(jìn)行操作。 ? ?解題思路: 我們可以利用兩個指針(dest和cur)的方法,

    2024年02月11日
    瀏覽(25)
  • 【算法】雙指針——leetcode盛最多水的容器、劍指Offer57和為s的兩個數(shù)字

    【算法】雙指針——leetcode盛最多水的容器、劍指Offer57和為s的兩個數(shù)字

    盛水最多的容器 (1)暴力解法 ??算法思路:我們枚舉出所有的容器大小,取最大值即可。 ??容器容積的計算方式: ??設(shè)兩指針 i , j ,分別指向水槽板的最左端以及最右端,此時容器的寬度為 j - i 。由于容器的高度由兩板中的較短的板決定,因此可得容積公式 :

    2024年02月13日
    瀏覽(25)
  • 【算法挨揍日記】day03——雙指針?biāo)惴╛有效三角形的個數(shù)、和為s的兩個數(shù)字

    【算法挨揍日記】day03——雙指針?biāo)惴╛有效三角形的個數(shù)、和為s的兩個數(shù)字

    ?? 611.?有效三角形的個數(shù) https://leetcode.cn/problems/valid-triangle-number/ 給定一個包含非負(fù)整數(shù)的數(shù)組? nums ?,返回其中可以組成三角形三條邊的三元組個數(shù)。 本題是一個關(guān)于三角形是否能成立的題目,首先我們假設(shè)三角形的三邊(a,b,c),我們要保證兩邊之和大于第三邊 ? ?題

    2024年02月12日
    瀏覽(23)
  • 「優(yōu)選算法刷題」:盛最多水的容器

    「優(yōu)選算法刷題」:盛最多水的容器

    給定一個長度為? n ?的整數(shù)數(shù)組? height ?。有? n ?條垂線,第? i ?條線的兩個端點是? (i, 0) ?和? (i, height[i]) ?。 找出其中的兩條線,使得它們與? x ?軸共同構(gòu)成的容器可以容納最多的水。 返回容器可以儲存的最大水量。 說明: 你不能傾斜容器。 示例 1: 示例 2: 這道

    2024年01月19日
    瀏覽(18)
  • 【力扣算法12】之 11. 盛最多水的容器 python

    【力扣算法12】之 11. 盛最多水的容器 python

    給定一個長度為 n 的整數(shù)數(shù)組 height 。有 n 條垂線,第 i 條線的兩個端點是 (i, 0) 和 (i, height[i]) 。 找出其中的兩條線,使得它們與 x 軸共同構(gòu)成的容器可以容納最多的水。 返回容器可以儲存的最大水量。 說明 :你不能傾斜容器。 輸入:[1,8,6,2,5,4,8,3,7] 輸出:49 解釋:圖中垂

    2024年02月16日
    瀏覽(21)
  • 【算法挨揍日記】day16——525. 連續(xù)數(shù)組、1314. 矩陣區(qū)域和

    【算法挨揍日記】day16——525. 連續(xù)數(shù)組、1314. 矩陣區(qū)域和

    525.?連續(xù)數(shù)組 給定一個二進(jìn)制數(shù)組? nums ?, 找到含有相同數(shù)量的? 0 ?和? 1 ?的最長連續(xù)子數(shù)組,并返回該子數(shù)組的長度。 本題的元素只有0和1,根據(jù)題目意思,我們可以把題目看成找一段最長的子區(qū)間使得區(qū)間的0 和1的數(shù)量相同,我們可以對其優(yōu)化將所有的0變成-1,這樣這

    2024年02月03日
    瀏覽(20)
  • 【算法挨揍日記】day04——15. 三數(shù)之和、18. 四數(shù)之和

    【算法挨揍日記】day04——15. 三數(shù)之和、18. 四數(shù)之和

    ? 15.?三數(shù)之和 https://leetcode.cn/problems/3sum/ 給你一個整數(shù)數(shù)組? nums ?,判斷是否存在三元組? [nums[i], nums[j], nums[k]] ?滿足? i != j 、 i != k ?且? j != k ?,同時還滿足? nums[i] + nums[j] + nums[k] == 0 ?。請你返回所有和為? 0 ?且不重復(fù)的三元組。 注意: 答案中不可以包含重復(fù)的三元

    2024年02月09日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包