• Leetcode刷题记录 剑指offer


    面试题3:数组中重复数字

    # 使用set,时间复杂度O(n),空间复杂度O(n)
    class
    Solution(object): def findRepeatNumber(self, nums): """ :type nums: List[int] :rtype: int """ a = set([]) for num in nums: if num in a: return num a.add(num)
    # 桶思想,时间复杂度O(n),空间复杂度O(1)
    class Solution(object):
        def findRepeatNumber(self, nums):
            """
            :type nums: List[int]
            :rtype: int
            """
            for i in range(len(nums)):
                val = nums[i]
                if val != i and val == nums[val]:
                    return val
                nums[i], nums[val] = nums[val], nums[i]

    面试题4:二维数组中的查找

    # 从右上往左下推
    class Solution(object):
        def findNumberIn2DArray(self, matrix, target):
            """
            :type matrix: List[List[int]]
            :type target: int
            :rtype: bool
            """
            if matrix == [] or matrix == [[]]:
                return False
            c = len(matrix[0])-1
            l = 0
            while True:
                if matrix[l][c] == target:
                    return True
                if matrix[l][c] > target:
                    c -= 1
                else:
                    l += 1
                if l > len(matrix)-1 or c < 0:
                    return False

    面试题5:替换空格

    class Solution(object):
        def replaceSpace(self, s):
            """
            :type s: str
            :rtype: str
            """
            l = [''] * len(s)
            for i in range(len(s)):
                if s[i] == ' ':
                    l[i] = '%20'
                else:
                    l[i] = s[i]
            return ''.join(l)

    面试题6:从尾到头打印链表

    # 非递归
    class Solution(object):
        def reversePrint(self, head):
            """
            :type head: ListNode
            :rtype: List[int]
            """
            result = []
            while head:
                result.append(head.val)
                head = head.next
            return result[::-1]
    # 递归
    class Solution(object):
        def reversePrint(self, head):
            """
            :type head: ListNode
            :rtype: List[int]
            """
            result = []
            def helper(root):
                if not root:
                    return
                helper(root.next)
                result.append(root.val)
            helper(head)
            return result

    面试题7:重建二叉树

    class Solution(object):
        def buildTree(self, preorder, inorder):
            """
            :type preorder: List[int]
            :type inorder: List[int]
            :rtype: TreeNode
            """
            def helper(inc_start, inc_end):
                if inc_start == inc_end:
                    return None
                inc_value = preorder[self.pre_index]
                root = TreeNode(inc_value)
                self.pre_index += 1
                root.left = helper(inc_start, inc_value_map[inc_value])
                root.right = helper(inc_value_map[inc_value] + 1, inc_end)
                return root
            self.pre_index = 0
            inc_value_map = {v: k for k, v in enumerate(inorder)}
            return helper(0, len(inorder))

    面试题9:用两个栈实现队列

    class CQueue(object):
    
        def __init__(self):
            self.l1 = []
            self.l2 = []
    
        def appendTail(self, value):
            """
            :type value: int
            :rtype: None
            """
            self.l2.append(value)
            
        def deleteHead(self):
            """
            :rtype: int
            """
            if not self.l1:
                if not self.l2:
                    return -1
                for i in range(len(self.l2)):
                    self.l1.append(self.l2.pop())
            return self.l1.pop()

    面试题10-I:斐波那契数列

    class Solution(object):
        def fib(self, n):
            """
            :type n: int
            :rtype: int
            """
            if n == 0:
                return 0 
            a = 0
            b = 1
            while n != 1:
                a, b = b, a+b
                n -= 1
            return b % 1000000007

    面试题10-II:青蛙跳台阶问题

    class Solution(object):
        def numWays(self, n):
            """
            :type n: int
            :rtype: int
            """
            if n == 0:
                return 1
            a = 1
            b = 1
            while n != 1:
                a, b = b, a+b
                n -= 1
            return b % 1000000007
  • 相关阅读:
    邮件发送的原理
    链接
    VS2010安装EntityFramework5.0
    asp.net mvc 使用Ajax
    图解WPF程序打包全过程
    MapReduce,DataJoin,链接多数据源
    Hadoop,MapReduce操作Mysql
    MapReduce,组合式,迭代式,链式
    下一代hadoop(Mapreduce),YARN/MRv2
    HBase 简介
  • 原文地址:https://www.cnblogs.com/weswes/p/12306094.html
Copyright © 2020-2023  润新知