经典编程题
ErrorMaker...
这个作者很懒,什么都没留下…
展开
-
归并排序+统计数组中的逆序对
class Solution: def InversePairs(self, data): self.cnt = 0 def merge(left,right): l1 = len(left) l2 = len(right) lis = [] i,j = 0,0 while i < 11 and j < l2: if left[i] < right[j]: lis.append(left[i]) i原创 2021-09-14 13:07:49 · 90 阅读 · 0 评论 -
求二叉树的深度
def depth(self,root): if not root:return 0 return 1 + max(self.depth(root.left),self.depth(root.right))原创 2021-08-26 09:19:52 · 61 阅读 · 0 评论 -
反转链表的方法
#反转链表:迭代法pre = Nonecur = slowwhile cur:nex = cur.nextcur.next= prepre = curcur = nexreturn pre原创 2021-08-25 13:45:29 · 88 阅读 · 0 评论 -
跳跃游戏
题目描述给出一个非负整数数组,你最初在数组第一个元素的位置数组中的元素代表你在这个位置可以跳跃的最大长度你的目标是用最少的跳跃次数来到达数组的最后一个元素的位置例如给出数组 A =[2,3,1,1,4]最少需要两次才能跳跃到数组最后一个元素的位置。(从数组下标为0的位置跳长度1到达下标1的位置,然后跳长度3到数组最后一个元素的位置)#贪心算法:每次只需要考虑i~i+A[i]范围内的最大值,找到一个范围内的最大值表示一跳class Solution: def jump(self , A原创 2021-05-06 18:33:45 · 65 阅读 · 0 评论 -
编写一个函数来查找字符串数组中的最长公共前缀。
#way1:import osclass Solution: def longestCommonPrefix(self , strs ): return os.path.commonprefix(strs)#way2:class Solution: def longestCommonPrefix(self, strs): if not strs: return '' s = strs[0]原创 2021-04-16 00:07:17 · 140 阅读 · 0 评论 -
判断给定的链表中是否有环。如果有环则返回true,否则返回false。 你能给出空间复杂度的解法么?
# class ListNode:# def __init__(self, x):# self.val = x# self.next = None## # @param head ListNode类 # @return bool布尔型#快慢指针法:class Solution: def hasCycle(self , head ): if not head: return False .原创 2021-04-12 18:10:05 · 376 阅读 · 0 评论 -
给出一个用二维矩阵表示的图像 返回该图像顺时针旋转90度的结果
m = [[1,2,3],[4,5,6],[7,8,9]]l = len(m)for i in range(l): for j in range(i): m[i][j],m[j][i] = m[j][i],m[i][j]k = int(l/2)for i in range(l): for j in range(k): m[i][j], m[i][l-1-j] = m[i][l-1-j], m[i][j]原创 2021-03-30 15:27:38 · 121 阅读 · 0 评论 -
给定n个非负整数a1,a2,…,an,其中每个数字表示坐标(i, ai)处的一个点。以(i,ai)和(i,0)(i=1,2,3...n)为端点画出n条直线。你可以从中选择两条线与x轴一起构成一个容器,
class Solution: def maxArea(self, height): i, j, res = 0, len(height) - 1, 0 while i < j: if height[i] < height[j]: res = max(res, height[i] * (j - i)) i += 1 else:原创 2021-03-30 14:24:05 · 415 阅读 · 0 评论 -
给出一个整数数组,请在数组中找出两个加起来等于目标值的数, 你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从
class Solution: def twoSum(self , numbers , target ): # write code here ans={} for i in range(len(numbers)): if target - numbers[i] in ans: return [ans[target - numbers[i]], i + 1] else:原创 2021-03-30 12:08:47 · 506 阅读 · 0 评论 -
利用生成器输出杨辉三角
def tri(): l = [1] while True: yield l new_l = [l[i] + l[i+1] for i in range(len(l) -1)] l = new_l l.insert(0,1) l.append(1)n = int(input())for i in tri(): n -= 1 if n < 0: break pri原创 2021-03-29 18:19:37 · 237 阅读 · 0 评论 -
现在有一个整数类型的数组,数组中素只有一个元素只出现一次,其余的元素都出现两次.输出出现一次的数。
#异或两个相同的数相当于没有操作class Solution: def singleNumber(self , A ): res = 0 for i in range(len(A)): res ^= A[i] return resk = Solutionalist = list(map(int,input().split(' ')))print(k.singleNumber(alist))...原创 2021-03-29 15:56:21 · 921 阅读 · 0 评论 -
python求给定二叉树的最大深度
class Solution: def maxDepth(self, root): if not root: return 0 else: left_dep = self.maxDepth(root.left) right_dep = self.maxDepth(root.right) return max(left_dep,right_dep) + 1原创 2021-03-29 15:40:37 · 154 阅读 · 0 评论 -
2021-03-29
给出两个二叉树,请写出一个判断两个二叉树是否相等的函数。判断两个二叉树相等的条件是:两个二叉树的结构相同,并且相同的节点上具有相同的值。class Solution: def isSameTree(self, p, q): if p is None and q is None: return True elif (p is None and q is not None) or (p is not None and q is None):原创 2021-03-29 14:22:43 · 42 阅读 · 0 评论 -
给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。
给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。#way1:利用di,dj控制方向class Solution: def spiralOrder(self, matrix): res, i, j, di, dj = [], 0, 0, 0, 1 if matrix: for _ in range(len(matrix) * len(matrix[0])): res.append(原创 2021-03-29 13:40:05 · 655 阅读 · 0 评论