自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 收藏
  • 关注

原创 leetcode刷题java之206. 反转链表

题目给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]PS:感觉这类的题目在前面做过好多了。。。进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?思路设置一个pre来作为新的反转之后的链表,设计一个循环(head不为空)从头到尾遍历head:先用temp来保存head.next;将head指向pre,代表做的反向操作;pre进行更新为head,表示最新的反向链表;head向后更新为temp

2021-07-12 20:39:39 254

原创 leetcode刷题java之205.同构字符串

题目给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。示例 1:输入:s = “egg”, t = “add”输出:true示例 2:输入:s = “foo”, t = “bar”输出:false思路判断s和t相同位置的字符是否一一对应:设计两个哈希表,一个对应s

2021-06-09 17:29:39 158

原创 leetcode刷题java之计数质数

题目统计所有小于非负整数 n 的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。思路一种方法为暴力法,即判断当前数能不能被前面的数整除,但是这样的计算量太大了另一种方法为埃氏筛,该算法由希腊数学家厄拉多塞(EratosthenesEratosthenes)提出,称为厄拉多塞筛法,简称埃氏筛。这种方法不同与上一种向前遍历,是一种向后遍历的方法。先设定一个长度为n的数组isPrime,用来记录对应的数字是否为质数,设置一

2021-05-20 16:46:39 161

原创 leetcode刷题java之移除链表元素

题目给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]思路一个简单的链表题目,可以练习java与链表使用先设一个用于保存head的res,使用res来指向head;然后设定pre和cur分别保存之前的值与当前的值;然后判断cur的值是否和前一个相同,(1)如果相同,pre指向cur的下一个(2)如

2021-05-17 16:11:52 143

原创 Leetcode刷题java之287. 寻找重复数

题目给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,找出 这个重复的数 。思路1二分法计算数组中小于等于mid的值(cnt)有多少个,若cnt<=mid值,则代表重复的值在mid的右侧;若cnt>mid值,则代表重复的值在mid的左侧;代码1class Solution { public int findDuplicate(int[] nums) {

2021-04-29 18:21:41 90

原创 Leetcode刷题java之202. 快乐数

题目要求编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 true ;不是,则返回 false 。思路首先设计一个取到下一个数的函数:对构成这个数的每一个数字取平方加到一起,得到下一个数。这个题可以通过快慢指针(慢指针指向下一个数,快指针指向下两个数)来进行循环遍历;如果两个

2021-04-28 18:03:29 82

原创 leetcode刷题java之201. 数字范围按位与(java二进制十进制转换,与运算)

思路对一定范围内的数进行与运算,如果依次将数进行位运算时间复杂度会超出范围,所以应当寻找简单方法。发现规律:结果为它们的公共前缀(详解见leetcode官方题解其他类型的位运算就没这么简单了)。在首数字小于末数字的情况下,将首末数字做右移位运算,并记录位运算次数shift。跳出循环后将数字做左位移运算shift次。感觉有位运算之后,程序会非常简单,但是思路要难一些。JAVA代码class Solution { public int rangeBitwiseAnd(int left, int

2021-04-14 11:49:25 126

原创 leetcode刷题python之105. 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ 9 20/ 15 7来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct...

2020-02-01 00:55:19 299

原创 leetcode刷题python之104.二叉树的最大深度

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最大深度 3 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-dept...

2020-02-01 00:54:42 129

原创 leetcode刷题python之103.二叉树的锯齿形层次遍历

给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回锯齿形层次遍历如下:[[3],[20,9],[15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/pr...

2020-02-01 00:53:45 297

原创 leetcode刷题python之二叉树的层次遍历

题目:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层次遍历结果:[[3],[9,20],[15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tr...

2020-01-31 21:42:13 392

原创 leetcode刷题python之101.对称二叉树

题目:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ 2 2/ \ / 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ 2 2\ 3 3# Definition for a binary tree node.# class TreeNode:...

2020-01-31 21:40:45 114

原创 pandas学习代码2

import numpy as npimport pandas as pdobj = pd.Series([0, '2', None, np.nan])# print(obj.isnull()) # None, np.nan对应的是null# print(obj.dropna(inplace= None)) # 只保留了0, '2'df = pd.DataFrame([[1,2,6...

2019-11-21 16:18:28 124

原创 leetcode刷题python之相同的树

# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def isSameTree(se...

2019-11-17 23:40:08 105

原创 leetcode刷题python之恢复二叉搜索树

# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def recoverTree(s...

2019-11-17 23:24:44 128

原创 leetcode刷题python之验证二叉搜索树

class Solution: def isValidBST(self, root: TreeNode) -> bool: res = [] def helper(root): if not root: return helper(root.left) ...

2019-11-17 21:40:16 203

原创 leetcode刷题python之交错字符串

class Solution: def isInterleave(self, s1: str, s2: str, s3: str) -> bool: if (len(s3) != len(s1) + len(s2)): return False # 不加这个通过为6/101,里面由95个长度不行的??? dp = [[False] * (len(s2...

2019-11-17 21:23:34 169

原创 leetcode刷题python之不同的二叉搜索树

思路:这个题与上一个不同,只需要得到次数。使用动态规划可以避免一次次的计算。n对应的次数与1~n-1都有关。ps:二叉搜索树的顺序为根→左→右题目:给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5class Solution: def numTrees(self, n: int) -> int: G = [0...

2019-11-17 17:20:19 137

原创 leetcode刷题python之不同的二叉搜索树II

思路:二叉树的知识。return [None, ]表示字数为空,每次都返回一个子树的列表,其中子树是由左子树和右子树整合得到的。题目:给定一个整数 n,生成所有由 1 … n 为节点所组成的二叉搜索树。示例:输入: 3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]# Def...

2019-11-17 17:15:56 121

原创 leetcode刷题python之二叉树的中序遍历

要开始二叉树了啊。。。思路:遍历的时候必然是从根节点开始遍历,那么遍历了根节点之后,将根节点的右侧先入栈,再是跟节点,再是左侧;这样pop的话就是按照左→根→右的顺序进行pop。white和gray用来判断点是否被遍历过,如果遍历过,点的颜色是灰色,没有则为白,pop的时候会看颜色,即是否被遍历过,如果没有被遍历,则去看其下面有没有子节点。题目:给定一个二叉树,返回它的中序 遍历。示例:输...

2019-11-16 00:52:43 221

原创 leetcode刷题python之复原ip地址

思路:回溯算法还是没有完全掌握啊。。。通过回溯来使字符串分为4部分,并且长度为n。需要注意的地方在代码里题目:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: “25525511135”输出: [“255.255.11.135”, “255.255.111.35”]class Solution: def restoreIpAddresses(sel...

2019-11-15 23:52:44 464

原创 leetcode刷题python之反转链表II

思路:对链表的运行机制有了了解之后就会好计算很多,需要注意的使操作链表之前往往需要对当前的链表进行备份。先使链表移动到n之前的位置,保存为begin;对n的位置进行保存为left;再使链表向后移动至m后的位置,并将其保存为tail;再对中间的部分进行反转,反转之后通过之前保存的坐标点将链表连接起来;注意,被反转的n对应的位置应该next置空,如果不置空的话会形成死循环。题目:反转从位置 m 到 ...

2019-11-15 14:42:37 105

原创 leetcode刷题python之解码方法

题目:一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。思路:使用动态规划,当前位置的可能性dp[i]取决于dp[i-1]和dp[i-2],有点类似爬楼梯。...

2019-11-15 10:56:29 204

原创 leetcode刷题python之格雷编码

题目:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2思路:这个题取决于格雷码的结构,非常巧妙,格雷码的上下两部分,除去开头的第一位,其余部分是对称的,所以想要得到...

2019-11-13 23:45:46 221

原创 leetcode刷题python之合并两个有序数组

题目:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = ...

2019-11-12 22:01:55 375

原创 leetcode刷题python之扰乱字符串

题目:给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树。下图是字符串 s1 = “great” 的一种可能的表示形式。在扰乱这个字符串的过程中,我们可以挑选任何一个非叶节点,然后交换它的两个子节点。例如,如果我们挑选非叶节点 “gr” ,交换它的两个子节点,将会产生扰乱字符串 “rgeat” 。我们将 "rgeat” 称作 “great” 的一个扰乱字符串。同...

2019-11-12 21:34:11 189

原创 leetcode刷题python之分割链表

题目:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5思路:将小于x的值放到左侧,大于等于x的值放到右侧链表,再把两个...

2019-11-12 20:48:26 270

原创 leetcode刷题python之柱状图中最大的矩形

题目:给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。示例:输入:[[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]输出: 6思路:终于理解这个使用栈的思路啦,其实栈里存储的是宽度不确定的高,当我们把一个高压入栈...

2019-11-11 23:17:11 204

原创 leetcode刷题python之柱状图中最大的矩形

题目:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10思路:这道题使用了栈,但是还是好难啊。。。...

2019-11-08 21:30:01 235

原创 leetcode刷题python之删除排序链表中的重复元素II

题目:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5思路:这个题与I相比,是要把重复元素都删除掉,这样如果直接删除重复值与参考值,对于重复出现的第三个则无法判断。为了这个问题引入一个新的参考链表,用这个链表判断连续的位置到底会...

2019-11-08 16:50:32 206

原创 leetcode刷题python之删除排序链表中的重复操作

题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2思路:链表地操作就是,先搞定设置一个代表链表地指针A,再设置另一指针B去修改链表,指针B的修改会改变原链表,最后返回指针A就ok。 left_Node.next = left_Node.next.next会修改链表;left_Node = left_Node...

2019-11-07 23:23:48 109

原创 leetcode刷题python之搜索旋转排序数组

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。示例 1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true思路:还是用二分法来解决。先判断mid是否对应...

2019-11-07 23:09:54 146

原创 leetcode刷题python之删除排序数组中的重复项

题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度后面...

2019-11-07 20:46:40 102

原创 leetcode刷题python之单词搜索

题目:给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 t...

2019-11-06 23:12:25 324

原创 leetcode刷题python之组合

思路:使用了回溯算法,循环中的嵌套太多,不能直接写出来,使用回溯,进行循环的迭代。class Solution: def combine(self, n: int, k: int) -> List[List[int]]: res = [] def backtrack(i, k , temp): if k == 0: ...

2019-11-06 21:51:57 87

原创 leetcode刷题python之长度最小的子数组

字符串操作,使用了双指针算法,但是感觉很费时间啊。。难道是我自己也有写的不好的地方?class Solution: def minSubArrayLen(self, s: int, nums: List[int]) -> int: # if not nums: return 0 left = 0 right = 0 m...

2019-11-05 23:10:33 203

原创 leetcode刷题python之最小覆盖子串

题目:给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。示例:输入: S = “ADOBECODEBANC”, T = “ABC”输出: “BANC”学到了(之前没记住又遇到了)新函数:Counter()可以直接把字符串变成字符(别的也行)的结合;all()判断列表有没有空字符串或者0,有则返回False,无则Truemap()以一个列表为基...

2019-11-05 22:15:56 278

原创 leetcode刷题python之颜色分类

思路:按步修改,不能直接给列表赋值(不知道为啥就是不成功)循环判断值是否为0,1,2为0,cur++,left++,此结果符合最终要求为1,cur++,left不变,因为还不确定后面有没有0来放到这个位置。如果left++了,代表这个位置也为0,但是这个位置为1,所以不能left++为2,交换cur与right的值,right–,cur和left不变。left不变是因为我们不知道交换过来的...

2019-11-05 17:25:35 232

原创 leetcode刷题python之搜索二维矩阵

思路:二分法查找,得记一个二分法的套路啊:while left<=right:相等:返回mid小于目标值:left = mid + 1mid大于目标值:right = mid - 1class Solution: def searchMatrix(self, matrix: List[List[int]], target: int) -> bool: ...

2019-11-05 00:55:17 186

原创 leetcode刷题python之矩阵置零

题目:给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。思路:将第一行和第一列作为横纵坐标,进行遍历,当有值为0时,横纵坐标为零,此遍历不能包含第一行和第一列(单独判断);进行第二次遍历,判断当前的横纵坐标,如果横纵坐标有一个为零,则将将该值置零。原地算法即限制了空间复杂度应为o(1),所以不能新建矩阵,是指声明了第一列是否置零的布尔值,使...

2019-11-04 16:05:06 518

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除