s-0-1

 7 

class Solution:
    def reverse(self, x: int) -> int:
        flag = False
        if x > 0:
            flag = True
            num = x
        else:
            num = (-1)*x
        str_x = str(num)[::-1]
        cnt = 0
        for i in str_x:
            cnt = cnt *10 + int(i)
        if flag:
            if cnt > 2**31-1:
                return 0
            else:
                return cnt
        else:
            if cnt > 2**31:return 0
            else:return (-1)*(cnt)

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x < 0:
            return False
        return str(x) == str(x)[::-1]

14 

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        sz, ret = zip(*strs), ""
        print(sz)
        for c in sz:
            if len(set(c)) > 1: 
                break
            ret += c[0]
        return ret

20 

class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        l = []
        dic_ = {']':'[','}':'{',')':'('}
        for i in s:
            if i in dic_:
                if l == []:return False
                else:
                    if dic_[i] == l[-1]:
                        l.pop()
                    else:
                        return False
            else:
                l.append(i)
        if l == []:
            return True
        else:
            return False

26 

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        if nums == []:return 0
        res,tmp = 1,nums[0]
        for i in range(1,len(nums)):
            if tmp!=nums[i]:
                nums[res] = nums[i]
                res+=1
                tmp = nums[i]
        return res

27 

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        cnt = 0
        for index in range(len(nums)):
            if nums[index] != val:
                nums[cnt] = nums[index]
                cnt += 1
        nums = nums[:cnt]
        return cnt

28 

class Solution:
    def strStr(self, haystack: str, needle: str) -> int:
        if len(haystack) < len(needle):return -1
        if len(haystack) == len(needle):
            if haystack == needle:
                return 0
            else:
                return -1
        for i in range(len(haystack)-len(needle)+1):
            if needle == haystack[i:i+len(needle)]:
                return i
        return -1
        

33 

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        if not nums:
            return -1
        l, r = 0, len(nums) - 1
        while l <= r:
            mid = (l + r) // 2
            if nums[mid] == target:
                return mid
            if nums[0] <= nums[mid]:
                if nums[0] <= target < nums[mid]:
                    r = mid - 1
                else:
                    l = mid + 1
            else:
                if nums[mid] < target <= nums[len(nums) - 1]:
                    l = mid + 1
                else:
                    r = mid - 1
        return -1

35 

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        length = len(nums)
        start = 0
        end = length
        if length == 0:
            return False
        while start < end:
            mid = (end+start)//2
            if nums[mid]>target:
                end = mid
            elif nums[mid]<target:
                start=mid+1
            else:
                return mid
        return start

53 

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        l = len(nums) 
        i = 0 
        sum = 0 
        MaxSum = nums[0] 
        while i < l: 
            sum += nums[i] 
            if sum > MaxSum: 
                MaxSum = sum 
            if sum < 0: 
                sum = 0 
            i += 1 
        return MaxSum

56 

class Solution:
    def lengthOfLastWord(self, s: str) -> int:
        #计算字符串的长度
        n = len(s)
        #计算最后单词的长度,初值为0
        nums = 0
        #从右向左遍历字符串
        for i in range(n-1,-1,-1):
            #当遍历到的值不为空格时,单词长度+1
            if s[i] != " ":
                nums += 1
            #当遍历到空格时,判断nums是否为0
            else:
                #nums不为0,说明已经遍历完了最后一个单词
                if nums != 0:
                    return nums
                #为0说明还没有遍历到字母
                else:
                    pass
        #如果没有单词返回初值
        return nums

66 

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        for i in range(len(digits)-1,-1,-1):
            if digits[i] != 9:
                digits[i] += 1
                break
            else:
                digits[i] = 0
        if digits[0] == 0:
            digits.insert(0, 1);
        return digits;
        

67 

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        num1, num2 = a, b
        res = ''
        i1, i2, carry = len(num1) - 1, len(num2) - 1, 0
        while i1 >= 0 or i2 >= 0:
            x = ord(num1[i1]) - ord('0') if i1 >= 0 else 0
            y = ord(num2[i2]) - ord('0') if i2 >= 0 else 0

            sum = x + y + carry
            res += str(sum % 2)
            carry = sum // 2

            i1, i2 = i1 - 1, i2 - 1
        if carry != 0: res += str(carry)
        return res[::-1]

69 


class Solution:
    def mySqrt(self, x: int) -> int:
        if x == 0:
            return 0

        l = 1
        r = x

        while l <= x:
            middle = (l + r) // 2
            s = middle**2

            if s <= x < (middle + 1)**2:
                return middle
            if s < x:
                l = middle
            if s > x:
                r = middle
     

70 

class Solution:
    def climbStairs(self, n: int) -> int:
        if n == 1 or n == 2:
            return n
        a = 1
        b = 2
        for i in range(3,n+1):
            a,b = b,a+b
        return b

83 

class Solution:
    def deleteDuplicates(self, head: ListNode) -> ListNode:
        if not head:
            return head
        root = head
        while head.next:
            if head.val == head.next.val:
                head.next = head.next.next
            else:
                head = head.next
        return root

88 

class Solution:
    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
        """
        Do not return anything, modify nums1 in-place instead.
        """
        #用两个指针 从后往前走
        cnt = m+n-1 #表示总的指针
        while m > 0 and n > 0:
            if nums1[m-1] >= nums2[n-1]:
                nums1[cnt] = nums1[m-1]
                m -= 1
                cnt -= 1
            else:
                nums1[cnt] = nums2[n-1]
                n -= 1
                cnt -= 1
        if m == 0:
            nums1[:cnt+1] = nums2[:cnt+1]

94 

class Solution:
    def inorderTraversal(self, root: TreeNode) -> List[int]:
        def dfs(root,res):
            if not root:return 
            dfs(root.left,res)
            res.append(root.val)
            dfs(root.right,res)
        res = []
        dfs(root,res)
        return res

100 

class Solution:
    def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
        if (p and not q) or (not p and q):
            return False
        elif not p and not q:
            return True
        else:
            if p.val != q.val:
                return False
            else:
                return self.isSameTree(p.right,q.right) and self.isSameTree(p.left,q.left)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值