3.數(shù)學(xué)(三)

題目匯總https://leetcode-cn.com/tag/math/

223. 矩形面積中等[?]

224. 基本計(jì)算器(沒(méi)做)

231. 2的冪簡(jiǎn)單[?]

233. 數(shù)字 1 的個(gè)數(shù)困難(不會(huì)做侣监,看題解)

258. 各位相加簡(jiǎn)單[?]

263. 丑數(shù)簡(jiǎn)單[?]

264. 丑數(shù) II中等[?]

223. 矩形面積中等

二維平面上計(jì)算出兩個(gè)由直線構(gòu)成的矩形重疊后形成的總面積。
每個(gè)矩形由其左下頂點(diǎn)和右上頂點(diǎn)坐標(biāo)表示臣淤,如圖所示橄霉。


示例:
輸入: -3, 0, 3, 4, 0, -1, 9, 2
輸出: 45

思路:總面積-折疊面積
//2020.07.20
class Solution {//執(zhí)行用時(shí):3 ms, 在所有 Java 提交中擊敗了98.13%的用戶
    public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
        int area1 = (C - A) * (D - B);
        int area2 = (G - E) * (H - F);
        if(C <= E || A >= G || B >= H || D <= F){
            return area1 + area2;//無(wú)重疊
        }
        int leftX = Math.max(A, E);//左下交點(diǎn)
        int leftY = Math.max(B, F);//左下交點(diǎn)
        int rightX = Math.min(C, G);//右上交點(diǎn)
        int rightY = Math.min(D, H);//右上交點(diǎn)
        return area1 + area2 - (rightX - leftX) * (rightY - leftY);
    }
}

231. 2的冪簡(jiǎn)單

給定一個(gè)整數(shù),編寫(xiě)一個(gè)函數(shù)來(lái)判斷它是否是 2 的冪次方邑蒋。
示例 1:
輸入: 1姓蜂,輸出: true
解釋: 20 = 1
示例 2:
輸入: 16,輸出: true
解釋: 24 = 16
示例 3:
輸入: 218医吊,輸出: false

思路:

根據(jù)二進(jìn)制的性質(zhì)钱慢,若n為2的冪,則n & (n - 1) = 0

class Solution {//執(zhí)行用時(shí):1 ms, 在所有 Java 提交中擊敗了100.00%的用戶
    public boolean isPowerOfTwo(int n) {
        if(n < 1)
            return false;
        //報(bào)錯(cuò)bad operand types for binary operator '&'
        //是因?yàn)?'==' 的優(yōu)先級(jí)比 '&' 大卿堂,需要加括號(hào)
        return (n & (n - 1)) == 0;
    }
}

233. 數(shù)字 1 的個(gè)數(shù)困難

給定一個(gè)整數(shù) n束莫,計(jì)算所有小于等于 n 的非負(fù)整數(shù)中數(shù)字 1 出現(xiàn)的個(gè)數(shù)。
示例:
輸入: 13
輸出: 6
解釋: 數(shù)字 1 出現(xiàn)在以下數(shù)字中: 1, 10, 11, 12, 13 草描。

思路:

https://leetcode-cn.com/problems/number-of-digit-one/solution/xiang-xi-tong-su-de-si-lu-fen-xi-duo-jie-fa-by-50/

258. 各位相加簡(jiǎn)單

給定一個(gè)非負(fù)整數(shù) num麦箍,反復(fù)將各個(gè)位上的數(shù)字相加,直到結(jié)果為一位數(shù)陶珠。
示例:
輸入: 38
輸出: 2
解釋: 各位相加的過(guò)程為3 + 8 = 11, 1 + 1 = 2挟裂。 由于 2 是一位數(shù),所以返回 2揍诽。
進(jìn)階:
你可以不使用循環(huán)或者遞歸诀蓉,且在 O(1) 時(shí)間復(fù)雜度內(nèi)解決這個(gè)問(wèn)題嗎?

思路一:我的直觀做法遞歸
class Solution {//執(zhí)行用時(shí):1 ms, 在所有 Java 提交中擊敗了100.00%的用戶
    public int addDigits(int num) {
        if(num < 10)
            return num;
        int sum = 0;
        while(num != 0){
            int digit = num % 10;
            sum += digit;//計(jì)算每位數(shù)字之和
            num /= 10;
        }
    return addDigits(sum);
    }
}
思路二:題解區(qū)的優(yōu)秀做法

其中有推導(dǎo)過(guò)程https://leetcode-cn.com/problems/add-digits/solution/xiang-xi-tong-su-de-si-lu-fen-xi-duo-jie-fa-by-5-7/#comment
n 是 0 暑脆,數(shù)根就是 0渠啤。
n 不是 9 的倍數(shù),數(shù)根就是 n 對(duì) 9 取余添吗,即 n mod 9沥曹。
n 是 9 的倍數(shù),數(shù)根就是 9。
同樣的妓美,我們可以通過(guò) (n-1) mod 9 + 1 這個(gè)式子把上邊的幾種情況統(tǒng)一起來(lái)僵腺。

class Solution {//執(zhí)行用時(shí):1 ms, 在所有 Java 提交中擊敗了100.00%的用戶
    public int addDigits(int num) {
        return (num - 1) % 9 + 1;
    }
}

263. 丑數(shù)簡(jiǎn)單

編寫(xiě)一個(gè)程序判斷給定的數(shù)是否為丑數(shù)。
丑數(shù)就是只包含質(zhì)因數(shù) 2, 3, 5正整數(shù)壶栋。
示例 1:
輸入: 6
輸出: true
解釋: 6 = 2 × 3

思路:

如果一個(gè)數(shù)能夠被2整除辰如,那么讓他繼續(xù)除以2;
如果一個(gè)數(shù)能夠被3整除贵试,那么讓他繼續(xù)除以3琉兜;
如果一個(gè)數(shù)能夠被5整除,那么讓他繼續(xù)除以5毙玻;
如果最后這個(gè)數(shù)變?yōu)?豌蟋,那么這個(gè)數(shù)就是丑數(shù),否則不是桑滩。

class Solution {
    public boolean isUgly(int num) {
        while(num % 2 == 0)
            num /= 2;
        while(num % 3 == 0)
            num /= 3;
        while(num % 5 == 0)
            num /= 5;
    return num == 1;
    }
}

264. 丑數(shù) II中等

編寫(xiě)一個(gè)程序梧疲,找出第 n 個(gè)丑數(shù)。
丑數(shù)就是質(zhì)因數(shù)只包含 2, 3, 5正整數(shù)施符。
示例:
輸入: n = 10
輸出: 12
解釋: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 個(gè)丑數(shù)。
**說(shuō)明: **

  1. 1 是丑數(shù)擂找。
  2. n 不超過(guò)1690戳吝。
思路:三指針+動(dòng)態(tài)規(guī)劃

利用三個(gè)指針,每次找到三組中最小的元素贯涎,然后指針后移

//2020.06.11
class Solution {//執(zhí)行用時(shí) :3 ms, 在所有 Java 提交中擊敗了84.88%的用戶
    public int nthUglyNumber(int n) {
        int[] dp = new int[n];
        dp[0] = 1;   //丑數(shù)序列听哭, 第 1 個(gè)丑數(shù)是 1
        int p_2 = 0;
        int p_3 = 0;
        int p_5 = 0;
        for (int i = 1; i < n; ++i)
        {
            dp[i] = Math.min(Math.min(2 * dp[p_2], 3 * dp[p_3]), 5 * dp[p_5]);
            if(dp[i] == 2 * dp[p_2])
                ++p_2;
            if(dp[i] == 3 * dp[p_3])
                ++p_3;
            if(dp[i] == 5 * dp[p_5])
                ++p_5;
        }
        return dp[n - 1];//找出第 n 個(gè)丑數(shù)
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市塘雳,隨后出現(xiàn)的幾起案子陆盘,更是在濱河造成了極大的恐慌,老刑警劉巖败明,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隘马,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡妻顶,警方通過(guò)查閱死者的電腦和手機(jī)酸员,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)讳嘱,“玉大人幔嗦,你說(shuō)我怎么就攤上這事×ぬ叮” “怎么了邀泉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我汇恤,道長(zhǎng)庞钢,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任屁置,我火速辦了婚禮焊夸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蓝角。我一直安慰自己阱穗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布使鹅。 她就那樣靜靜地躺著揪阶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪患朱。 梳的紋絲不亂的頭發(fā)上鲁僚,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音裁厅,去河邊找鬼冰沙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛执虹,可吹牛的內(nèi)容都是我干的拓挥。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼袋励,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼侥啤!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起茬故,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤盖灸,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后磺芭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赁炎,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年钾腺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了甘邀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡垮庐,死狀恐怖松邪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情哨查,我是刑警寧澤逗抑,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響邮府,放射性物質(zhì)發(fā)生泄漏荧关。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一褂傀、第九天 我趴在偏房一處隱蔽的房頂上張望忍啤。 院中可真熱鬧,春花似錦仙辟、人聲如沸同波。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)未檩。三九已至,卻和暖如春粟焊,著一層夾襖步出監(jiān)牢的瞬間冤狡,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工项棠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留悲雳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓香追,卻偏偏與公主長(zhǎng)得像合瓢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翅阵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345