剑指offer
归遇卿
不会写代码的码农......
展开
-
Python 剑指offer 【25】:删除链表中的一个节点
代码:'''剑指offer25:删除一个链表节点'''# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def deleteNode(self, head, val): if head==Non..原创 2020-09-05 09:06:22 · 148 阅读 · 0 评论 -
Python 剑指offer 【24】:连续子数组的最大和
题目描述:代码:#采用动态规划的思想class Solution(object): def maxSubArray(self, nums): for i in range(1,len(nums)): nums[i]+=max(nums[i-1],0) return max(nums)原创 2020-09-05 08:30:30 · 112 阅读 · 0 评论 -
Python 剪枝offer 【23】:第一个只出现一次的字符
题目描述:代码:class Solution(object): def firstUniqChar(self, s): dic={} for ch in s: if ch not in dic: dic[ch]=True else: dic[ch]=False print(dic.keys()) for k in dic.key原创 2020-09-02 09:43:22 · 105 阅读 · 0 评论 -
Python 剑指offer【21】:两个链表第一个公共节点
题目描述:代码:# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def getIntersectionNode(self, headA, headB): nodeA=headA原创 2020-08-24 10:47:47 · 121 阅读 · 0 评论 -
Python 剑指offer 【20】:调整数组顺序使得奇数位于偶数前边
题目描述:代码:class Solution(object): #使用双指针 def exchange(self, nums): head,tail=0,len(nums)-1 #如果头指针指向偶数,尾指针指向奇数,则交换数字 while head<=tail: if nums[head]%2==0 and nums[tail]%2==1: temp=nums[head原创 2020-08-24 09:57:43 · 151 阅读 · 0 评论 -
Python 剑指offer 【19】:和为S的两个数字
题目描述:代码:class Solution(object): #使用双指针 def twoSum(self, nums, target): head,tail=0,len(nums)-1 #当尾指针小于头指针时结束 while head<=tail: #尾指针大于目标,减小 if nums[tail]>target: tail-=1原创 2020-08-24 09:47:09 · 104 阅读 · 0 评论 -
Python 剑指offer 【18】:数组中重复的数字
题目描述:代码:#使用数组class Solution(object): def findRepeatNumber(self, nums): dict=[] for num in nums: if num in dict : return num dict.append(num)#使用集合class Solution(object): def find.原创 2020-08-24 09:31:03 · 109 阅读 · 0 评论 -
Python 剑指offer【17】:数组中出现次数超过一半的个数
题目描述:代码:class Solution(object): def majorityElement(self, nums): #数组只有一个数据时直接返回 if len(nums)==1: return nums[0] #字典存储列表数字出现的个数 dict={} for i in nums: if i not in dict.keys():原创 2020-08-23 10:13:41 · 129 阅读 · 0 评论 -
Python 剑指offer【16】:二叉搜索数最近公共祖先
题目描述:代码:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution(object): #利用二叉搜索树的性质,两个值小于根节点在左树,都大于在右树,一大一小在根两侧原创 2020-08-23 09:53:30 · 130 阅读 · 0 评论 -
Python 剑指offer【15】:从上到下打印二叉树
题目描述:代码:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution(object): def levelOrder(self, root): if not原创 2020-08-23 09:18:21 · 134 阅读 · 0 评论 -
Python 剑指offer 【14】:和为S的连续正数列
题目描述:代码:class Solution(object): def findContinuousSequence(self, target): #采用滑动窗口法来取数组 head=1 #滑动窗口头 tail=0 #滑动窗口尾 sum=0 result=[] while head < (target//2)+1 : if sum < target: #总原创 2020-08-22 09:39:34 · 135 阅读 · 0 评论 -
Python 剑指offer 【12】:二叉树的最近公共祖先
题目描述:代码:class Solution(object): #递归遍历二叉树 def lowestCommonAncestor(self, root, p, q): #如果递归超过边界,或者root等于pq则返回 if not root or root == p or root == q:return root left = self.lowestCommonAncestor(root.left,p,q) right原创 2020-08-21 10:30:38 · 140 阅读 · 0 评论 -
Python 剑指offer 【12】:二进制中一的个数
题目描述:代码:class Solution(object): #汉明距离==》异或后一的个数 def hammingWeight(self, n): return bin(n^0).count('1')原创 2020-08-21 09:57:54 · 125 阅读 · 0 评论 -
Python 剑指offer 【11】:用两个栈实现队列
题目描述:代码:class CQueue(object): def __init__(self): #构造两个列表,列表B倒序存储列表A self.A=[] self.B=[] def appendTail(self, value): #添加元素 self.A.append(value) def deleteHead(self): if self.B:原创 2020-08-21 09:48:41 · 103 阅读 · 0 评论 -
Python 剑指offer 【10】:合并两个有序数组
题目描述:代码:# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def mergeTwoLists(self, l1, l2): merValue=ListNode(0)原创 2020-08-20 09:38:42 · 109 阅读 · 0 评论 -
Python 剪枝offer 【9】:二叉树的第K大节点
题目描述:代码:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution(object): def kthLargest(self, root, k): sel原创 2020-08-20 09:20:55 · 114 阅读 · 0 评论 -
Python 剑指offer【8】:反转链表
题目描述:代码:# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def reverseList(self, head): head=head tail=None原创 2020-08-19 14:47:58 · 59 阅读 · 0 评论 -
Python 剑指offer【7】:从尾到头打印链表
题目描述:代码:# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def reversePrint(self, head): result=[] if head == Non原创 2020-08-19 14:35:45 · 83 阅读 · 0 评论 -
Python 剑指offer【6】:替换空格
题目描述:代码:class Solution(object): def replaceSpace(self, s): list=s.split(" ") s='' for i in range(len(list)-1): s+=list[i] s+='%20' s+=list[len(list)-1] return s原创 2020-08-19 14:21:36 · 74 阅读 · 0 评论 -
Python 剑指offer【5】:打印1到最大的n位数
题目描述:代码:class Solution(object): def printNumbers(self, n): list=[] for i in range(1,10**n): list.append(i) return list原创 2020-08-18 14:17:32 · 100 阅读 · 0 评论 -
Python 剑指offer【4】:二叉树镜像
题目描述:代码:class Solution(object): def mirrorTree(self, root): #递归调用,将二叉树左节点复制给右节点 if root == None: return root temp_point=root.right root.right=self.mirrorTree(root.left) root.left=self.mirrorTre原创 2020-08-18 10:52:51 · 104 阅读 · 0 评论 -
Python 剑指offer【3】:链表中倒数第K个数
题目描述:代码:class Solution(object): def getKthFromEnd(self, head, k): index_head,index_tail=head,head #如果链表为None或者K为负值,则返回None if head == None or k<=0: return None for i in range(k): #如果在K的范围内,链表为原创 2020-08-18 10:42:58 · 110 阅读 · 0 评论 -
Python 剑指offer【2】:二叉树的深度
题目描述:代码:class Solution(object): def maxDepth(self, root): if root==None: return 0 #如果到底就返回0 return max(self.maxDepth(root.left),self.maxDepth(root.right))+1#取左右子树的最大值+1即为根树的深度...原创 2020-08-18 10:20:31 · 79 阅读 · 0 评论 -
python 剑指offer【1】:左旋转字符串
题目描述:代码:class Solution(object): def reverseLeftWords(self, s, n): result=[""]*len(s) #创建数组存储字符串元素 for i in range(len(s)): if i<n: result[len(s)-n+i]=s[i]#将要旋转的字符串元素赋值到数组后半部分 else:原创 2020-08-18 09:54:48 · 126 阅读 · 0 评论