![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
dataastron
工程师
展开
-
剑指offer_动态规划
树#26.py# 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)# B是A的子结构, 即 A中有出现和B相同的结构和节点值。# 例如:# 给定的树 A:# 3# / \# 4 5# / \# 1 2# 给定的树 B:# 4 # /# 1# 返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。# 示例 1:# 输入:A = [1,2,3], B = [3,1]#原创 2020-09-01 21:50:31 · 107 阅读 · 0 评论 -
剑指offer_数学和其他
数学和其他#14_2.py# 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m - 1] 。请问 k[0]*k[1]*...*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。class Solution: def cuttingRope(self, n: int) -> int:原创 2020-09-01 15:54:18 · 115 阅读 · 0 评论 -
剑指offer_双指针
双指针#21.py#输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。class Solution: def exchange(self, nums: List[int]) -> List[int]: j=len(nums)-1 i=0 while i<j: if nums[i]%2==0: if nums[j]%原创 2020-09-01 15:53:28 · 175 阅读 · 0 评论 -
剑指offer_剩下全部
树#12.py# 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。# [["a","b","c","e"],# ["s","f","c","s"],# ["a","d","e","e"]]# 但矩阵中不包含字符串“abfb”的路径,因为字符串原创 2020-09-01 10:36:04 · 114 阅读 · 0 评论 -
剑指offer_二分法
二分#11.py# 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 class Solution: def minArray(self, numbers: List[int]) -> int: left=0 right=len(numbers)-1 while lef原创 2020-09-01 10:34:04 · 136 阅读 · 0 评论 -
剑指offer_链表题
链表#6.py# 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。# 示例 1:# 输入:head = [1,3,2]# 输出:[2,3,1]# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reversePri原创 2020-09-01 10:29:46 · 128 阅读 · 0 评论 -
剑指offer代码下
#40.py# 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。# 示例 1:# 输入:arr = [3,2,1], k = 2# 输出:[1,2] 或者 [2,1]# 示例 2:# 输入:arr = [0,1,2,1], k = 1# 输出:[0]class Solution: def getLeastNumbers(self, arr: List[int], k: int) -> Lis原创 2020-08-17 14:32:53 · 133 阅读 · 0 评论 -
剑指offer代码上
#3.py# jc3找出数组中重复的数字。# 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。# 示例 1:# 输入:# [2, 3, 1, 0, 2, 5, 3]# 输出:2 或 3 # 限制:# 2 <= n <= 100000class Solution: def findRepeatNumber(self, nums: Li原创 2020-08-17 14:27:19 · 135 阅读 · 0 评论 -
leetcode23. 合并K个排序链表
方法1:通过优先级队列,不是把所有节点塞进去。只把每个链表的头节点放进去。方法2:归并排序(还未实现)方法3:直接便利所有节点,排序,重新输出节点。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def mergeKLists(self, li原创 2020-08-10 17:24:54 · 131 阅读 · 0 评论 -
排序_快排算法
def partition(arr,low,high): i=low-1 pivot =arr[high] print(arr[low:high],pivot) for j in range(low,high): if arr[j]<pivot : i+=1 arr[i],arr[j]...原创 2020-05-01 16:27:23 · 141 阅读 · 0 评论 -
bloom过滤器源码实现
bloom过滤器源码实现package com.jd.risk.faketext.udf;import java.nio.charset.Charset;import java.util.BitSet;public class BloomFilter<E> { private BitSet bitset; private int expectedNumEle...原创 2018-09-20 19:25:25 · 235 阅读 · 0 评论 -
leetcode80删除排序数组中的重复项 II
快慢指针 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定 nums = [1,1,1,2,2,3], 函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1,...原创 2020-01-07 10:34:59 · 85 阅读 · 0 评论 -
leetcode547 并查集 朋友圈
class Solution: def findCircleNum(self, M): n = len(M) circles = {i: i for i in range(n)} def find(i): if i == ci...原创 2020-01-08 14:22:28 · 126 阅读 · 0 评论 -
leetcode杂记 视频学习
刷 LeetCode 时发现了两个LeetCode 刷题大神的视频讲解。花花酱B 站 - 花花酱 LeetCode花花酱油管上有美食和唱将频道也不错。它的特点:缺点是前面200题是跳跃的。优点题目比较新,不全。按照主题分类。更新快。basketwang传送门:B 站 - basketwangCoding缺点已经不更新了,优点以前b站上有前200多题的讲解。现在好像找不到了...原创 2020-04-05 10:25:55 · 133 阅读 · 0 评论 -
动态规划和递归
原创 2020-03-08 17:15:12 · 148 阅读 · 0 评论 -
leetcode229 摩尔投票
169、229力扣leetcode-cn.com力扣leetcode-cn.comclass Solution:def majorityElement(self, nums: List[int]) -> List[int]:count1=0count2=0cand1=Nonecand2=Nonefor i in nums:print(count1,cand1,...原创 2020-04-05 10:16:26 · 134 阅读 · 0 评论