刷leetcode以及剑指offer的心得总结

使用Python语言刷LeetCode以及剑指offer的心得总结第一篇


1.在Python语言中字符串可以拥有列表(list)的部分功能:
比如:st=“sgrgeg” 字符串可以通过 st[i] (注意i为下标)进行输出,也可以通过for i in range(len(st)):方式进行遍历输出。但是字符串没有list列表所拥有的相关函数,比如reverse()函数等。
技巧:当整型数据需要逆转时,比如123->321等,可以将整型数据转化为字符串数据,然后使用[::-1],逆行输出,再使用int()函数进行转回整型,从而实现目标,降低时间复杂度。切记,整型数据如 x=32,由于整形数据无法进行迭代,所以无法使用 list(x)函数将整型数据转化为列表。
例:
将整型通过取余数,取整数存储于列表之中,进而使用reverse()函数进行逆置,时间按复杂度较高。123->321

   class Solution:
    def reverse(self, x: int) -> int:
        flage=False
        if x<0:
            #low=1
            flage=True
            x=abs(x)
        st=[]
        while x/10!=0:
            st.append(x%10)
            x=x//10
        num=len(st)
        i=0
        sum=0
        while i(2**31-1):
            return 0
            
        if flage:
            return -sum
        else:
            return sum     

例:将整型数据x=123,通过str(x)[::-1]函数直接实现逆置输出,再而转化为整型,时间复杂度较低

class Solution:
    def reverse(self, x: int) -> int:
        flage=False
        if x<0:
            flage=True
            x=-1*x
        ar=str(x)[::-1]
        ar=int(ar)
        if ar>2**31-1 or ar<(-2**31):
            return 0
        if flage:
            return -1*ar
        else:
            return ar

2.不同进制的数据间的相互转化,如 int() 函数可以将一个指定进制的数字型字符串或者十进制数字转化为整型,详细信息 链接: https://blog.csdn.net/tcattime/article/details/82826824
int (object, base),object一个数据对象,base当前数据对象属于什么进制,int()后将对象转化为十进制整型。
例:
以下代码实现将二进制转化为十进制相加后,又转回二进制,注意由于bin(a+b)输出后,最前面会带二进制标志ob,如输出2的二进制对应的0b10,所以用bin(a+b)[2:]只输出10

class Solution:
    def addBinary(self, a: 'str', b: 'str') -> 'str':
        a=int(a,2)
        b=int(b,2)
        return bin(a+b)[2:]

3.递归:范例->镜像树判断:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def isSymmetric(self, root: TreeNode) -> bool:
      if root==None:
          return True
      else:
          return sefl.judg(root.left,root.right)
    def  judg(self,rot_left,rot_right) :
            if rot_left==None and rot_right==None:
                    return True
            elif rot_left!=None and rot_right!=None and rot_left.val==rot_right.val:
                    return self.judg(rot_left.left,rot_right.right) and self.judg(rot_left.right,rot_right,left)
           else:
                 return False
                   

你可能感兴趣的:(刷题总结)