• leetcode:1-5题代码整理


    以下是这段时间抽时间刷的前5题,都是自己想的解法,或许不是最优解,只是整理下,方便日后优化提升

    1. Two Sum:

    class Solution:
        # @return a tuple, (index1, index2)
        def twoSum(self, num, target):
            dict = {}
            for i in xrange(len(num)):
                if dict.get(target-num[i], None) == None:
                    dict[num[i]] = i
                else:
                    return (dict[target-num[i]] , i )

    2. Add Two Numbers:

    class Solution(object):
        def addTwoNumbers(self, l1, l2):
            """
            :type l1: ListNode
            :type l2: ListNode
            :rtype: ListNode
            """
            more=0
            l3=ListNode(0)
            
            l3.val=l1.val+l2.val+more
            if l3.val>=10:
                more=1
            else:
                more=0
            l3.val=l3.val%10
            l1_temp=l3
            l1=l1.next
            l2=l2.next
            
            while(l1 and l2):
                temp=ListNode(0)
                temp.val=l1.val+l2.val+more
                if temp.val>=10:
                    more=1
                else:
                    more=0
                temp.val=temp.val%10
                
                l1_temp.next=temp
                l1_temp=temp
                l1=l1.next
                l2=l2.next
            
            if((l1 is None )and( l2 is None)):
                if more==1:
                    temp=ListNode(0)
                    temp.val=1
                    l1_temp.next=temp
                return l3
                
            elif(l1 and ( l2 is None)):
                while(l1):
                    temp=ListNode(0)
                    temp.val=more+l1.val
                    if temp.val>=10:
                        more=1
                    else:
                        more=0
                    temp.val=temp.val%10
                    l1_temp.next=temp
                    l1_temp=temp
                    l1=l1.next
                if more==1:
                    temp=ListNode(0)
                    temp.val=1
                    l1_temp.next=temp
                return l3
            
            elif(l2 and ( l1 is None)):
                while(l2):
                    temp=ListNode(0)
                    temp.val=more+l2.val
                    if temp.val>=10:
                        more=1
                    else:
                        more=0
                    temp.val=temp.val%10
                    l1_temp.next=temp
                    l1_temp=temp
                    l2=l2.next
                if more==1:
                    temp=ListNode(0)
                    temp.val=1
                    l1_temp.next=temp
                return l3

    3. Longest Substring Without Repeating Characters:

    class Solution(object):
        def lengthOfLongestSubstring(self, s):
            """
            :type s: str
            :rtype: int
            """
            new_str = ''
            max = 0
            for ch in s:
                if not ch in new_str:
                    new_str += ch
                else:
                    max = len(new_str) if len(new_str) > max else max
                    idx = new_str.find(ch)
                    new_str = new_str[idx+1:] + ch
            max = len(new_str) if len(new_str) > max else max
            return max

    4. Median of Two Sorted Arrays:

    class Solution(object):
        def findMedianSortedArrays(self, nums1, nums2):
            """
            :type nums1: List[int]
            :type nums2: List[int]
            :rtype: float
            """
            end1=len(nums1)-1
            end2=len(nums2)-1
            if len(nums1)==0:
                num=len(nums2)
                if num%2:     #num是一个奇数
                    return float(nums2[num/2])
                else:
                    median=num/2
                    return (float(nums2[median-1])+nums2[median])/2
                
            elif len(nums2)==0:
                num=len(nums1)
                if num%2:     #num是一个奇数
                    median=num/2
                    return float(nums1[median])
                else:
                    median=num/2
                    return (float(nums1[median-1])+nums1[median])/2
                    
            elif nums1[end1]<nums2[0]:
                nums1.extend(nums2)
                num=len(nums1)
                if num%2:     #num是一个奇数
                    median=num/2
                    return float(nums1[median])
                else:
                    median=num/2
                    return (float(nums1[median-1])+nums1[median])/2
                    
            elif nums1[0]>nums2[end2]:
                nums2.extend(nums1)
                num=len(nums2)
                if num%2:     #num是一个奇数
                    return float(nums2[num/2])
                else:
                    median=num/2
                    return (float(nums2[median-1])+nums2[median])/2
            
            else:
                i=0
                j=0
                new=[]
                while i<len(nums1) and j<len(nums2):
                    if nums1[i]<nums2[j]:
                        new.append(nums1[i])
                        i=i+1
                    elif nums1[i]==nums2[j]:
                        new.append(nums1[i])
                        new.append(nums1[i])
                        i=i+1
                        j=j+1
                    else:
                        new.append(nums2[j])
                        j=j+1
                while i<len(nums1):
                    new.append(nums1[i])
                    i=i+1
                while j<len(nums2):
                    new.append(nums2[j])
                    j=j+1
                num=len(new)
                if num%2:     #num是一个奇数
                    return float(new[num/2])
                else:
                    median=num/2
                    return (float(new[median-1])+new[median])/2

    5. Longest Palindromic Substring:

    class Solution(object):
        
        def longestPalindrome(self, s):
            """
            :type s: str
            :rtype: str
            """
            if len(s)==1:
                return s
            elif len(s)==2 and s[0]==s[1]:
                return s
            else:
                s_fin1=""
                s_fin2=""
                
                index_l=0
                index_r=1
                max_length=0
                left=-1
                right=-1
                flag=0
                while index_r<len(s):
                    i=0
                    length=0
                    while index_l-i>=0 and index_r+i<len(s) and s[index_l-i]==s[index_r+i]:
                        i=i+1
                        length=length+2
                    if length>max_length:
                        max_length=length
                        left=index_l
                        right=index_r
                    index_l=index_l+1
                    index_r=index_r+1
                if max_length:
                    begin=left-max_length/2+1
                    end=right+max_length/2
                    flag=2
                    s_fin1=s[begin:end]
                
                
                index=1
                max_length=1
                center=-1
                flag=0
                while index<(len(s)-1):
                    i=1
                    length=1
                    while index-i>=0 and index+i<len(s) and s[index-i]==s[index+i]:
                        i=i+1
                        length=length+2
                    if length>max_length:
                        max_length=length
                        center=index
                    index=index+1
                if max_length>1:
                    begin=center-(max_length-1)/2
                    end=center+(max_length-1)/2+1
                    flag=1
                    s_fin2=s[begin:end]
                    
                if len(s_fin1)>len(s_fin2):
                    return s_fin1
                else:
                    return s_fin2
  • 相关阅读:
    CENTOS7下安装REDIS
    金融量化之tushare模块的使用
    fiddler抓包出现错误 creation of the root certificate was not successful
    matplotlib学习
    Android-消息处理学习总结(Handler,Looper)
    Android-View的绘制源码学习总结
    数据库练习
    编译原理实验一
    图形学
    资源分配(分组背包)
  • 原文地址:https://www.cnblogs.com/soulmate1023/p/5866759.html
Copyright © 2020-2023  润新知