每日Leetcode—算法(17)

2.两数相加

算法:

def addTwoNumbers(self, l1, l2):
    if l1 == None:       #如果为空,则直接返回另一个链表
        return l2
    if l2 == None:
        return l1
    flag = 0             #相加大于10,则flag为1,否则为0
    tmp = ListNode(0)      #创建新链表
    res = tmp         #返回时用res结点
    while l1 or l2:
        tmps = 0         #相加后的结果
        if l1:         #当l1不为空时,先加l1
            tmps = l1.val      #l1的值赋给tmps
            l1 = l1.next      #往下走一步
        if l2:         #当l2不为空时,先加l2
            tmps += l2.val      #l2的值加到tmps
            l2 = l2.next      #往下走一步
        tmpres = ((tmps+flag)%10)       #取模放入tmpres
        flag = ((tmps+flag)//10)        #如果相加大于10,则将整除结果赋值给flag
        res.next = ListNode(tmpres)         #将tmpres加入res的下一个节点
        res = res.next      #往下走一步
        if flag:
            res.next = ListNode(1)        #flag的值只为1或0,如为1,则加入res.next
        res = tmp.next          #从tmp.next处返回
        del tmp
        return res

3. 无重复字符的最长子串

算法:

def lengthOfLongestSubstring(self, s):
    dic = {}     #声明字典用来保存字符
    i, ans = 0,0
    for j in range(len(s)):
        if s[j] in dic:            #如果字符在字典里,则对比字符值与i进行对比,较大者赋值给i
            i = max(dic[s[j]], i)       #这里的i为重复字符的下标
        ans = max(j - i + 1, ans)       #j+1-i为下标加一,减去重复字符的下标
        dic[s[j]] = j + 1     #将字符存入字典
    return ans
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容