【leetcode刷题之算法】

1. 两数之和

def twoSum(self, nums, target):
        for i in range(len(nums)):
            for j in range(i+1,len(nums)):
                if nums[i]+nums[j]==target:
                    return i,j

2. 两数相加

 def addTwoNumbers(self,l1,l2):
        # 创建一个结点值为 None 的头结点, dummy 和 p 指向头结点, dummy 用来最后返回, p 用来遍历
        dummy=p=ListNode(None)

        # 初始化进位 s 为 0
        s=0

        while l1 or l2 or s:
             # 如果 l1 或 l2 存在, 则取l1的值 + l2的值 + s(s初始为0, 如果下面有进位1, 下次加上)
            s+=(l1.val if l1 else 0)+(l2.val if l2 else 0)

            # p.next 指向新链表, 用来创建一个新的链表
            p.next=ListNode(s%10)

            # p 向后遍历
            p=p.next

            # 有进位情况则取模, eg. s = 18, 18 // 10 = 1
            s//=10

            # 如果l1存在, 则向后遍历, 否则为 None
            l1 = l1.next if l1 else None    

             # 如果l2存在, 则向后遍历, 否则为 None
            l2 = l2.next if l2 else None 

        # 返回 dummy 的下一个节点, 因为 dummy 指向空的头结点, 下一个节点才是新建链表的后序节点  
        return dummy.next

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

 def lengthOfLongestSubstring(self, s):
        k=len(s)
        for i in range(len(s)):
            for j in range(i+1,k):
                if s[i]!=s[j]:
                    continue
                else:
                    k=j
                    break
        return k

4. 寻找两个正序数组的中位数

 def findMedianSortedArrays(self, nums1, nums2):
        list=[]

        for i in range(len(nums1)):
            list.append(nums1[i])
        
        for j in range(len(nums2)):
            list.append(nums2[j])

        print(list)
        list.sort()
        print(list)

        if (len(list)%2)==0:
            return (list[len(list)/2-1]+list[len(list)/2])/2.0
        else:
            return list[len(list)//2]

5. 最长回文子串

def longestPalindrome(self, s):
        list=[]
        for i in range(len(s)):
            if s[i]==s[len(s)-i-1]:
                list.append(s[i:len(s)-i])
                continue
        return max(list)

7. 整数反转

def reverse(self, x):
        num=[]
        i=0
        while x:
            num.append(x % 10)
            x=  x / 10
            i = i + 1
            
        s=0
        for i in range(len(num)):
            s = s + num[i]*10**(len(num)-i-1)
        return s

相关推荐

  1. leetcode算法

    2023-12-22 11:36:04       74 阅读
  2. LeetCode笔记双指针算法

    2023-12-22 11:36:04       43 阅读
  3. leetcodeMySQL】

    2023-12-22 11:36:04       74 阅读
  4. GoLangleetcode

    2023-12-22 11:36:04       56 阅读
  5. GoLangleetcode

    2023-12-22 11:36:04       62 阅读
  6. GoLangleetcode

    2023-12-22 11:36:04       56 阅读
  7. GoLangleetcode

    2023-12-22 11:36:04       60 阅读
  8. GoLangleetcode

    2023-12-22 11:36:04       51 阅读
  9. GoLangleetcode

    2023-12-22 11:36:04       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-22 11:36:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-22 11:36:04       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-22 11:36:04       82 阅读
  4. Python语言-面向对象

    2023-12-22 11:36:04       91 阅读

热门阅读

  1. ffprobe工具

    2023-12-22 11:36:04       70 阅读
  2. Milvus实战:构建Q&A系统及推荐系统

    2023-12-22 11:36:04       72 阅读
  3. ros2/ros1中的cmakelists.txt文件解释

    2023-12-22 11:36:04       54 阅读
  4. 设计模式_行为型模式_观察者模式

    2023-12-22 11:36:04       62 阅读