成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

小李飛刀:刷題第四彈!

luffyZh / 2611人閱讀

摘要:第二題羅馬數(shù)字轉(zhuǎn)整數(shù)難度簡(jiǎn)單羅馬數(shù)字包含以下七種字符,,,,,和。字符數(shù)值例如,羅馬數(shù)字寫做,即為兩個(gè)并列的。通常情況下,羅馬數(shù)字中小的數(shù)字在大的數(shù)字的右邊。給定一個(gè)羅馬數(shù)字,將其轉(zhuǎn)換成整數(shù)。

隨便說點(diǎn)啥

TIME:2019-02-01
昨晚其實(shí)刷了題來著,但是沒有解出來,哭泣!
但是,今天重新寫了下,解出來咯~
所以今天的題量要增加咯~
我會(huì)加油的!

第一題

14. 最長(zhǎng)公共前綴
難度:簡(jiǎn)單

編寫一個(gè)函數(shù)來查找字符串?dāng)?shù)組中的最長(zhǎng)公共前綴。
如果不存在公共前綴,返回空字符串 ""。

我的解題代碼如下:

class Solution:
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        length = len(strs)
        result = ""
        if length < 1:#如果空就不需要比較
            return result
        if length < 2:
            result = strs[0]
            return result
        #找到最短詞,避免越界
        l = len(strs[0])
        for i in strs[1:]:
            if l > len(i):
                l = len(i)#最小的循環(huán)次數(shù)
        for j in range(l):#循環(huán)二維 strs[a][j]
            for a in range(1,length):
                if strs[0][j] == strs[a][j]:#始終按第一個(gè)數(shù)組來做比對(duì)
                    if a == length - 1:#數(shù)組最后一位
                        result = result + strs[0][j]
                else:
                    return result
        return result            

因?yàn)槭堑诙閷懥?,所以加了很多奇怪的注釋,但是思路清晰很多?br>注釋還是很重要的~

我的主要思路是:

判斷數(shù)據(jù)量是否需要繼續(xù)循環(huán)判斷,數(shù)組長(zhǎng)度為0和為1情況下結(jié)果不同。(為1的時(shí)候要返回?cái)?shù)組本身....因?yàn)檫@個(gè)所以執(zhí)行錯(cuò)誤一次)

當(dāng)需要循環(huán)判斷的時(shí)候,始終拿strs[0][j]就是數(shù)組第一項(xiàng)的每一個(gè)字母來做比較。

雙重循環(huán)來判斷,一層是判斷數(shù)組每個(gè)數(shù),一層是判斷是否有項(xiàng)目超出字母數(shù)量。

總結(jié):
雙重循環(huán)的效率還是比較低的,可以再考慮優(yōu)化下,看下官方題解的方式。

第二題

13. 羅馬數(shù)字轉(zhuǎn)整數(shù)
難度:簡(jiǎn)單

羅馬數(shù)字包含以下七種字符: I, V, X, L,C,D 和 M。
字符 數(shù)值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000

例如, 羅馬數(shù)字 2 寫做 II ,即為兩個(gè)并列的 1。12 寫做 XII ,即為 X + II 。 27 寫做 XXVII, 即為 XX + V + II 。
通常情況下,羅馬數(shù)字中小的數(shù)字在大的數(shù)字的右邊。但也存在特例,例如 4 不寫做 IIII,而是 IV。數(shù)字 1 在數(shù)字 5 的左邊,所表示的數(shù)等于大數(shù) 5 減小數(shù) 1 得到的數(shù)值 4 。同樣地,數(shù)字 9 表示為 IX。這個(gè)特殊的規(guī)則只適用于以下六種情況:

I 可以放在 V (5) 和 X (10) 的左邊,來表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左邊,來表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左邊,來表示 400 和 900。
給定一個(gè)羅馬數(shù)字,將其轉(zhuǎn)換成整數(shù)。輸入確保在 1 到 3999 的范圍內(nèi)。

我的解題代碼如下:

class Solution:
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
        result = 0
        dic = {"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000,"IV":4,"IX":9,"XL":40,"XC":90,"CD":400,"CM":900}
        if len(s) < 2:
            result = dic[s[0]]
            return result
        length = len(s)
        l = 0
        while l < length:
            point = s[l]
            if l + 1 == length:
                l = l + 1
            elif point == "I" and (s[l+1] == "V" or s[l+1] == "X"):
                point = point + s[l+1]
                l = l + 2
            elif point == "X" and (s[l+1] == "L" or s[l+1] == "C"):
                point = point + s[l+1]
                l = l + 2
            elif point == "C" and (s[l+1] == "D" or s[l+1] == "M"):
                point = point + s[l+1]
                l = l + 2
            else:
                l = l + 1
            result = result + dic[point]
        return result


執(zhí)行效率上屬于偏慢的那一撥。
我的主要思路是:

用字典來映射字母對(duì)應(yīng)的數(shù)字,包括需要特殊對(duì)待的朋友們

當(dāng)遇到特殊字符的時(shí)候做特殊判斷

總結(jié):

看了佳揚(yáng)的思路后茅塞頓開,其實(shí)對(duì)于特殊字符可以簡(jiǎn)單的判斷,他們對(duì)應(yīng)數(shù)字的大小。這樣就簡(jiǎn)化判斷為比大小,而不是多重對(duì)比字符內(nèi)容。

字典用來做映射還是比較快,還是要多研究下它的用法。

第三題

21. 合并兩個(gè)有序鏈表
難度:簡(jiǎn)單

將兩個(gè)有序鏈表合并為一個(gè)新的有序鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。

我的解題代碼如下:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def mergeTwoLists(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        r = ListNode(0)#游標(biāo)
        result = r
        while 1:
            if l1 is None and l2 is None:
                return None
            elif l1 is None:
                return l2
            elif l2 is None:
                return l1
            elif l1.val < l2.val:
                r.val = l1.val
                l1 = l1.next
                if l1 is None:
                    r.next = l2
                    break
                r.next = ListNode(0)
                r = r.next
            else:
                r.val = l2.val
                l2 = l2.next
                if l2 is None:
                    r.next = l1
                    break
                r.next = ListNode(0)
                r = r.next
        return result            


算是比較大眾的一個(gè)效率。

我的主要思路是:

對(duì)比兩個(gè)鏈表節(jié)點(diǎn)的值,首先取小的值,才會(huì)有序。

判斷每次的l1和l2是否有next,當(dāng)其中一個(gè)不存在的時(shí)候,就可以直接連接另一條鏈表了。

總結(jié):

鏈表的結(jié)構(gòu)第一次接觸。本題主要是熟悉了下對(duì)當(dāng)前節(jié)點(diǎn)部署下一節(jié)點(diǎn)的方法。主要方式為將游標(biāo)指向下一節(jié)點(diǎn)即可。每次都對(duì)節(jié)點(diǎn)進(jìn)行操作。

鏈表的形式還有多種,包括對(duì)其的增刪改查,都需要再熟悉。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43140.html

相關(guān)文章

  • 小李飛刀題第五彈!

    摘要:寫在前面的話好幾天木有刷題啦,今天猛刷了一把,要梳理一個(gè)順序好好的學(xué)習(xí)啦一定要好好執(zhí)行每天做題的計(jì)劃最近真的好忙碌啊,還要做視頻。第二題最大子序和難度簡(jiǎn)單給定一個(gè)整數(shù)數(shù)組,找到一個(gè)具有最大和的連續(xù)子數(shù)組子數(shù)組最少包含一個(gè)元素,返回其最大和。 寫在前面的話 好幾天木有刷題啦,今天猛刷了一把,要梳理一個(gè)順序好好的學(xué)習(xí)啦~一定要好好執(zhí)行每天做題的計(jì)劃!最近真的好忙碌啊,還要做視頻。不過呢,看...

    Miracle 評(píng)論0 收藏0
  • 小李飛刀題第三彈!

    摘要:刷題第三天正式刷題第三天。注意空字符串可被認(rèn)為是有效字符串。錯(cuò)誤的一次是因?yàn)闆]有考慮空字符串,當(dāng)存在為的時(shí)候,結(jié)果應(yīng)該為。第二題加一難度簡(jiǎn)單類型給定一個(gè)由整數(shù)組成的非空數(shù)組所表示的非負(fù)整數(shù),在該數(shù)的基礎(chǔ)上加一。 刷題第三天 正式刷題第三天。之前看了個(gè)說法,挺認(rèn)可的。就是不要太在意一天的能呈現(xiàn)的價(jià)值,但是要在意累計(jì)的價(jià)值。之前很多時(shí)候我會(huì)對(duì)今天一天沒有完成的計(jì)劃而沮喪,事實(shí)上,算法的實(shí)踐...

    SillyMonkey 評(píng)論0 收藏0
  • 小李飛刀題第十三彈!

    摘要:寫在前面今天的小李的目標(biāo)是排序算法,果然還是要下手寫才會(huì)更有體會(huì),也更記得住。排序算法冒泡排序主要是比對(duì)相鄰兩個(gè)數(shù)之間的大小關(guān)系,不斷將較大值交換至最后。 寫在前面 今天的小李的目標(biāo)是排序算法,果然還是要下手寫才會(huì)更有體會(huì),也更記得住。 認(rèn)真做題的分割線 第一題 215. 數(shù)組中的第K個(gè)最大元素難度:中等在未排序的數(shù)組中找到第k個(gè)最大的元素。請(qǐng)注意,你需要找的是數(shù)組排序后的第k個(gè)最大的...

    lixiang 評(píng)論0 收藏0
  • 小李飛刀:做題第七彈!

    摘要:給定一個(gè)大小為的數(shù)組,找到其中的眾數(shù)。第五題合并兩個(gè)有序數(shù)組難度簡(jiǎn)單給定兩個(gè)有序整數(shù)數(shù)組和,將合并到中,使得成為一個(gè)有序數(shù)組。說明初始化和的元素?cái)?shù)量分別為和。第六題二叉樹的最大深度難度簡(jiǎn)單給定一個(gè)二叉樹,找出其最大深度。 寫在前面的話 做做做題,慢慢上手了就覺得刷題速度變快了,果然還是有點(diǎn)笨~希望最后一竅快點(diǎn)通吧~ 開始做題 第一題 169. 求眾數(shù)難度:簡(jiǎn)單給定一個(gè)大小為 n 的數(shù)組...

    AlphaWatch 評(píng)論0 收藏0
  • 小李飛刀:做題第十二彈!

    摘要:寫在前面今天沒有叨逼叨但是又一次錯(cuò)過了競(jìng)賽愛睡覺的小李下周要上班,下下周一定要參加了握拳認(rèn)真做題的分割線第一題兩地調(diào)度公司計(jì)劃面試人。第人飛往市的費(fèi)用為,飛往市的費(fèi)用為。示例輸入輸出解釋第一個(gè)人去市,費(fèi)用為。 寫在前面 今天沒有叨逼叨...但是又一次錯(cuò)過了競(jìng)賽...愛睡覺的小李...下周要上班,下下周一定要參加了(握拳 認(rèn)真做題的分割線 第一題 1029. 兩地調(diào)度公司計(jì)劃面試2N人。...

    yagami 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<