leetcode:1-5題代碼整理

来源:http://www.cnblogs.com/soulmate1023/archive/2016/09/12/5866759.html
-Advertisement-
Play Games

以下是這段時間抽時間刷的前5題,都是自己想的解法,或許不是最優解,只是整理下,方便日後優化提升 1. Two Sum: 2. Add Two Numbers: 3. Longest Substring Without Repeating Characters: 4. Median of Two So ...


以下是這段時間抽時間刷的前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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 之前裝的是live版 就是沒有桌面的版本,想看能hdmi看電影,於是找了教程安裝omxplayer 用 命令 通過hdmi播放電影 具體安裝過程發在貼吧里了:http://tieba.baidu.com/p/4766986525?see_lz=1 但是依然不能掛字幕.... 無奈今天重裝rasbia ...
  • 近期項目查詢資料庫太慢,持久層也沒有開啟二級緩存,現希望採用Redis作為緩存。為了不改寫原來代碼,在此採用AOP+Redis實現。 目前由於項目需要,只需要做查詢部分: 數據查詢時每次都需要從資料庫查詢數據,資料庫壓力很大,查詢速度慢,因此設置緩存層,查詢數據時先從redis中查詢,如果查詢不到, ...
  • 在前面的幾篇關於Free編程的討論示範中我們均使用了基礎類型的運算結果。但在實際應用中因為需要考慮運算中出現異常的情況,常常會需要到更高階複雜的運算結果類型如Option、Xor等。因為Monad無法實現組合(monad do not compose),我們如何在for-comprehension中 ...
  • ...
  • 一、必備插件 1.babel:es6的語法支持 2.karma:測試框架 3.jasmine:斷言框架 4.webpack:打包工具 5.karma-webpack:karma調用webpack打包介面的插件 二、實現步驟 1.通過npm安裝上述必備的插件包 2.創建webpack.test.con ...
  • 誰沒掉進過幾個大坑 記得好久之前,總能時不時在某個地方看到一些標語,往往都是上面一個偉人的頭像,然後不管是不是他說的話,下麵總是有看起來很政治正確且沒卵用的屁話,我活到目前為止,最令我笑的肚子痛得是下麵這段標語。 態度決定高度,思路決定出路,細節決定成敗,環境決定心境,格局決定結局。 沒錯,這是一個 ...
  • R語言 1997年成為GNU項目 開源免費 R官方網址 www.r-project.org R是數據分析領域的語言小巧靈活,通過擴展包來增強功能繪圖功能代碼簡單 開發環境R + RStudio 1、數據類型character 字元numeric 數值型,實數或小數integer 整型complex ...
  • Struts與Hibernate可以做什麼事? Struts,Mvc中控制層解決方案,可以進行請求數據自動封裝、類型轉換、文件上傳、效驗… Hibernate,持久層的解決方案;可以做到,把對象保存到資料庫,從資料庫中取出的是對象。 傳統的開發模式 基於mvc模式進行項目開發; 基於mvc的項目框架 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...