2024-04-05 代碼隨想錄

代碼隨想錄算法訓(xùn)練營(yíng)day31 | 題目455、題目376辞色、題目53


題目一描述

455. 分發(fā)餅干

假設(shè)你是一位很棒的家長(zhǎng)克伊,想要給你的孩子們一些小餅干伴栓。但是嚼鹉,每個(gè)孩子最多只能給一塊餅干袁滥。

對(duì)每個(gè)孩子 i星虹,都有一個(gè)胃口值 g[i]零抬,這是能讓孩子們滿足胃口的餅干的最小尺寸;并且每塊餅干 j宽涌,都有一個(gè)尺寸 s[j] 平夜。如果 s[j] >= g[i],我們可以將這個(gè)餅干 j 分配給孩子 i 卸亮,這個(gè)孩子會(huì)得到滿足忽妒。你的目標(biāo)是盡可能滿足越多數(shù)量的孩子,并輸出這個(gè)最大數(shù)值兼贸。

示例 1:
輸入: g = [1,2,3], s = [1,1]
輸出: 1
解釋:
你有三個(gè)孩子和兩塊小餅干段直,3個(gè)孩子的胃口值分別是:1,2,3。
雖然你有兩塊小餅干溶诞,由于他們的尺寸都是1鸯檬,你只能讓胃口值是1的孩子滿足。
所以你應(yīng)該輸出1螺垢。

示例 2:
輸入: g = [1,2], s = [1,2,3]
輸出: 2
解釋:
你有兩個(gè)孩子和三塊小餅干喧务,2個(gè)孩子的胃口值分別是1,2赖歌。
你擁有的餅干數(shù)量和尺寸都足以讓所有孩子滿足。
所以你應(yīng)該輸出2.

提示:

1 <= g.length <= 3 * 104
0 <= s.length <= 3 * 104
1 <= g[i], s[j] <= 231 - 1

解題思路

貪心功茴,統(tǒng)計(jì)能喂飽的人數(shù)即可庐冯。

代碼實(shí)現(xiàn)

方法一:

class Solution {
    public int findContentChildren(int[] g, int[] s) {
        Arrays.sort(g);
        Arrays.sort(s);
        int i = 0;
        int j = 0;

        while (i < g.length && j < s.length) {
            if (s[j] >= g[i]) {
                i++;
                j++;
            } else {
                j++;
            }
        }
        return i;
    }
}

題目二描述

376. 擺動(dòng)序列

如果連續(xù)數(shù)字之間的差嚴(yán)格地在正數(shù)和負(fù)數(shù)之間交替,則數(shù)字序列稱為 擺動(dòng)序列 坎穿。第一個(gè)差(如果存在的話)可能是正數(shù)或負(fù)數(shù)展父。僅有一個(gè)元素或者含兩個(gè)不等元素的序列也視作擺動(dòng)序列。

例如玲昧, [1, 7, 4, 9, 2, 5] 是一個(gè) 擺動(dòng)序列 栖茉,因?yàn)椴钪?(6, -3, 5, -7, 3) 是正負(fù)交替出現(xiàn)的。

相反酌呆,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是擺動(dòng)序列衡载,第一個(gè)序列是因?yàn)樗那皟蓚€(gè)差值都是正數(shù),第二個(gè)序列是因?yàn)樗淖詈笠粋€(gè)差值為零隙袁。
子序列 可以通過從原始序列中刪除一些(也可以不刪除)元素來獲得痰娱,剩下的元素保持其原始順序。

給你一個(gè)整數(shù)數(shù)組 nums 菩收,返回 nums 中作為 擺動(dòng)序列 的 最長(zhǎng)子序列的長(zhǎng)度 梨睁。

示例 1:
輸入:nums = [1,7,4,9,2,5]
輸出:6
解釋:整個(gè)序列均為擺動(dòng)序列娜饵,各元素之間的差值為 (6, -3, 5, -7, 3) 坡贺。

示例 2:
輸入:nums = [1,17,5,10,13,15,10,5,16,8]
輸出:7
解釋:這個(gè)序列包含幾個(gè)長(zhǎng)度為 7 擺動(dòng)序列。
其中一個(gè)是 [1, 17, 10, 13, 10, 16, 8] 箱舞,各元素之間的差值為 (16, -7, 3, -3, 6, -8) 遍坟。

示例 3:
輸入:nums = [1,2,3,4,5,6,7,8,9]
輸出:2

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

進(jìn)階:你能否用 O(n) 時(shí)間復(fù)雜度完成此題?

解題思路

貪心,只統(tǒng)計(jì)有效的數(shù)量即可晴股。

代碼實(shí)現(xiàn)

方法一:

class Solution {
    public int wiggleMaxLength(int[] nums) {
        if (nums.length == 1)
            return 1;
        int res = 1;
        int preFlag = -1;
        for (int i = 1; i < nums.length; i++) {
            if (nums[i] != nums[i - 1]) {
                if (preFlag == -1) {
                    preFlag = check(nums[i], nums[i - 1]);
                    res++;
                }
                if (preFlag != check(nums[i], nums[i - 1])) {
                    res++;
                }
                preFlag = check(nums[i], nums[i - 1]);
            }
        }
        return res;
    }

    private int check(int a, int b) {
        if (a - b > 0) { // 遞減
            return 0;
        } else { // 遞增
            return 1;
        }
    }
}

題目三描述

53. 最大子數(shù)組和

給你一個(gè)整數(shù)數(shù)組 nums 愿伴,請(qǐng)你找出一個(gè)具有最大和的連續(xù)子數(shù)組(子數(shù)組最少包含一個(gè)元素),返回其最大和电湘。
子數(shù)組 是數(shù)組中的一個(gè)連續(xù)部分隔节。

示例 1:
輸入:nums = [-2,1,-3,4,-1,2,1,-5,4]
輸出:6
解釋:連續(xù)子數(shù)組 [4,-1,2,1] 的和最大,為 6 寂呛。

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

示例 3:
輸入:nums = [5,4,-1,7,8]
輸出:23

提示:

1 <= nums.length <= 10^5
-10^4 <= nums[i] <= 10^4

進(jìn)階:如果你已經(jīng)實(shí)現(xiàn)復(fù)雜度為 O(n) 的解法怎诫,嘗試使用更為精妙的 分治法 求解。

解題思路

貪心法贷痪,每次子序列之和為負(fù)數(shù)就停止增加新的元素幻妓,從下一個(gè)元素開始重新尋找子序列,因?yàn)樨?fù)數(shù)加任何數(shù)都更小劫拢。
也可以用滑動(dòng)窗口涌哲,窗口縮小的條件就是窗口內(nèi)和為負(fù)胖缤,本質(zhì)是一樣的。

代碼實(shí)現(xiàn)

方法一:

class Solution {
    public int maxSubArray(int[] nums) {
        int curSum = 0;
        int res = Integer.MIN_VALUE;

        for (int i = 0; i < nums.length; i++) {
            curSum += nums[i];
            res = Math.max(curSum, res);
            if (curSum < 0) {
                curSum = 0;
            }
        }
        return res;
    }
}

方法二:

class Solution {
    public int maxSubArray(int[] nums) {
        int curSum = 0;
        int res = Integer.MIN_VALUE;
        int left = 0;
        int right = 0;

        while (right < nums.length) {
            curSum += nums[right];
            right++;

            res = Math.max(res, curSum);

            while (curSum < 0) {
                curSum -= nums[left];
                left++;
            }

        }
        return res;
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末阀圾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子狗唉,更是在濱河造成了極大的恐慌初烘,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件分俯,死亡現(xiàn)場(chǎng)離奇詭異肾筐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缸剪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門吗铐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人杏节,你說我怎么就攤上這事唬渗。” “怎么了奋渔?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵镊逝,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我嫉鲸,道長(zhǎng)撑蒜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任玄渗,我火速辦了婚禮座菠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘藤树。我一直安慰自己浴滴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布也榄。 她就那樣靜靜地躺著巡莹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪甜紫。 梳的紋絲不亂的頭發(fā)上降宅,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音囚霸,去河邊找鬼腰根。 笑死,一個(gè)胖子當(dāng)著我的面吹牛拓型,可吹牛的內(nèi)容都是我干的额嘿。 我是一名探鬼主播瘸恼,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼册养!你這毒婦竟也來了东帅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤球拦,失蹤者是張志新(化名)和其女友劉穎靠闭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坎炼,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡愧膀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谣光。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片檩淋。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖萄金,靈堂內(nèi)的尸體忽然破棺而出蟀悦,到底是詐尸還是另有隱情,我是刑警寧澤捡絮,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布熬芜,位于F島的核電站,受9級(jí)特大地震影響福稳,放射性物質(zhì)發(fā)生泄漏涎拉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一的圆、第九天 我趴在偏房一處隱蔽的房頂上張望鼓拧。 院中可真熱鬧,春花似錦越妈、人聲如沸季俩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酌住。三九已至,卻和暖如春阎抒,著一層夾襖步出監(jiān)牢的瞬間酪我,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工且叁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留都哭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像欺矫,于是被迫代替她去往敵國(guó)和親纱新。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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