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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...