zoukankan      html  css  js  c++  java
  • 【100Days of 100 line Code】5 day

    刷了十道easy题,简单是简单,坑也是真的多啊。

     半夜三点了,好困

    LeetCode #14 最长公共前缀

    判断是否为空列表,判断是否有空字符串在列表里面,对列表进行去重处理。对列表最短元素进行查找,(最短元素必满足最长公共前缀条件。水桶短板原理)返回最短元素位置,个数,是否全为1个长度,最短长度 四个维度。为1长度超过一个,则为没有最长公共前缀(以对列表进行去重处理)。如果列表只有一个元素,则返回这个元素。如果不全为一个长度且最短长度为1.判断列表内所有元素是否有公共前缀。不满足上列条件则证明有公共前缀在进行判断,取最短列表元素作为对比目标,依次对比,找到断点t,返回目标[0:t]

    这题坑是真的有很多,半天时间花这道题上面了。。。

    class Solution(object):
        def longestCommonPrefix(self, strs):
            if strs != []:
                if '' in strs:
                    return ''
                strs = list(set(strs))
                shortest, longflag, seat, onestr = self.shortestStr(strs)
                contrast_strs = strs[seat]
                strs.pop(seat)
                if onestr > 1:
                    return ''
                if len(strs) == 0:
                    return contrast_strs
                if longflag == False and shortest == 1:
                    for i in range(len(strs)):
                        if contrast_strs != strs[i] :
                            break
                        else :
                            return ''
                t = 0
                while t < shortest:
                    for i in range(len(strs)):
                        if contrast_strs[t] == strs[i][t]:
                            a = contrast_strs[0:t]
                        else:
                            return contrast_strs[0:t]
                    t += 1
                return contrast_strs[0:t]
            else :
                return ''
    
        def shortestStr(self,strs):
            lenght = 1000000
            flag = True
            seat = 0
            oneTime = 0
            for i in range(len(strs)):
                if len(strs[i]) < lenght:
                    lenght = len(strs[i])
                    seat = i
                if len(strs[i]) != 1:
                    flag = False
                else :
                    oneTime += 1
            return lenght, flag, seat, oneTime

    LeetCode #20 有效的括号

    这题比较简单,创建一个括号类型字典,一个新的列表储存值。

    字符串为空值返回true,这里踩了一次坑。再判断字符串长度,如果除2有余数,不可能满足条件,返回false。

    判断第一个字符 是否再字典中,不在的话,即不满足条件。

    从s[1]开始查找。如果s[i]在括号类型字典内,且与之前存的类型对应的话,新建列表删除该符号,如果不在s[i]内的话,

    存入新建列表,与后面的进行匹配。

    最后返回 new_list == [] 若全部匹配,则为true,有值未被删除,则为false

    class Solution(object):
        def isValid(self, s):
            bracketTpye ={
                ')':'(',
                '}':'{',
                ']':'['
            }
            new_list = []
            if s == '' :
                return True
            if len(s)%2 != 0 :
                return False
            if s[0] not in bracketTpye:
                new_list.append(s[0])
            else :
                return False     
            for i in s[1:] :
                if i in bracketTpye and bracketTpye[i] == new_list[-1]:
                    new_list.pop()
                else :
                    new_list.append(i)
            return new_list == []

    LeetCode #28. 实现strStr()

    这题比较简单,判断目标字符串是否等于对象字符串里面,或者目标字符串为空值 

    不在的话判断目标字符串是否存在于对象字符串

    在的话,直接查找位置,不在返回值

    class Solution(object):
        def strStr(self, haystack, needle):
            if needle == '' or haystack == needle :
                return 0
            else :
                if needle in haystack :
                    for i in range(0,len(haystack)-len(needle)+1):
                        if haystack[i:len(needle)+i] == needle:
                            return i
                return -1

    LeetCode #53 最大子序和

    把当前位置的数与前一位之和相加,若大于当前位置的数的话,把当前位置的数替换成两数之和。

    在对nums进行排序,取最大值

    class Solution:
        def maxSubArray(self, nums):
            for i in range(1,len(nums)):
                if nums[i]+nums[i-1] > nums[i]:
                    nums[i] = nums[i]+nums[i-1]
            nums.sort()
            return nums[-1]

    LeetCode #最后一个单词的长度

    对字符串进行倒序处理。

    创建一个状态指针,指示英文字母之前有没有空格。

    从后开始查找,遇到空格且指针指示空格之前没有字母,直接跳过

    遇到英文字母,对指针状态进行改变,长度变量加一

    遇到空格,指针指示空格之前有字母,跳出循环。

    class Solution(object):
        def lengthOfLastWord(self, s):
            s = s[::-1]
            flag = True
            strlong = 0
            for i in range(len(s)):
                if s[i]== " " and flag :
                    continue
                elif s[i] != ' ':
                    flag = False
                    strlong += 1
                else :
                    break
            return strlong

    LeetCode #69 x的平方根

    二分法

    用了一次循环,内存溢出,然后改用二分查找,AC了

    设置左坐标指针=0,右坐标指针x

    判断 左边小于右边

    mid = 等于左右两数之和的一半

    当mid的平方大于时x在左边,移动右指针

    当 mid的平方小于时x在右边,移动左指针

    class Solution:
        def mySqrt(self, x):
            left=0;right=x
            while left<right:
                mid=int((left+right)/2)
                if x<mid**2:
                    right=mid
                else:
                    left=mid+1
            if left>1:
                return left-1
            else:
                return left

    LeetCode #70 爬楼梯

    递推,类似于斐波那契数列。每一集台阶可以走的种数等于前两集之和

    创建一个数组,储存每一级台阶可以走的种数。

    1集台阶 1种 1步

    2集台阶 2种 1步1步 2步

    3集台阶 3种 1步1步1步 2步1步 1步2步

    4集台阶 5种 3+2

    5集台阶 8种 5+3

    class Solution(object):
        def climbStairs(self, n):
            """
            :type n: int
            :rtype: int
            """
            pace = []
            pace.append(1)
            pace.append(1)
            for i in range(2, n+1):
                pace.append(pace[i-1]+pace[i-2])
            return pace[n]

    LeetCode #88 合并两个有序数组

    合并,排序

    class Solution(object):
        def merge(self, nums1, m, nums2, n):
            """
            :type nums1: List[int]
            :type m: int
            :type nums2: List[int]
            :type n: int
            :rtype: void Do not return anything, modify nums1 in-place instead.
            """
            for i in range(m,m+n):
                nums1[i] = nums2[i-m]
            nums1.sort()
  • 相关阅读:
    各种各样的Hashes
    爬取时出现报错 encoding error : input conversion failed due to input error, bytes 0xAC 0x4E 0x00 0x00
    Youtube.com中Uncaught TypeError: copy is not a function,如何解决
    生成“2021-Aug-27th”这样的1st,2nd,3rd, 4th 日期格式
    How to clear the content of the recycle bin in PowerShell?
    Delphi开发的服务在Windows2003 64位注册方式
    VS2015打开时,一直处理等待状态,并显示“Microsoft Visual Studio正忙”的提示窗,如下图
    Oracle操作类
    ie浏览器与其他浏览器兼容性问题解决
    echarts实时曲线【转】
  • 原文地址:https://www.cnblogs.com/mygzhh/p/9311714.html
Copyright © 2011-2022 走看看