leetcode
文章平均质量分 61
wxl@
已迁至知乎,CSDN博客不再更新
展开
-
阶乘约数---蓝桥
本题顺利解出来需要了解:任意一个正整数 X 都可以表示成若干个质数乘积的形式,即:X=p1α1∗p2α2……∗pkαkX = p_1^{α1} ∗ p_2^{α2} …… ∗ p_k^{αk}X=p1α1∗p2α2……∗pkαk,则约数的个数为:(a1+1)(a2+1)......(ak+1)(a_1+1)(a_2+1)......(a_k+1)(a1+1)(a2+1)......(ak+1)那么思路就可以化成:将从1到100这100个数,全部分为若干个质数相乘的形式,然后记录各个质数.原创 2021-06-04 20:35:05 · 734 阅读 · 1 评论 -
652.寻找重复的子树
题目链接深度优先(C++)解题思路:将每一棵子树序列化,即对于一棵子树,转化为:string(root)+string(root.left)+string(root.right)string(root)+string(root.left)+string(root.right)string(root)+string(root.left)+string(root.right)对于这个序列需要使用一个散列表来储存其出现的次数,如果次数为1,即之前遇到过一次,就将该根节点放入结果列表中;否则不放入。cla原创 2021-02-15 18:19:30 · 216 阅读 · 0 评论 -
105.从前序遍历与中序遍历构建二叉树
构建二叉树可以使用前序遍历+中序,或者中序+后序,但是前序+后序无法构建,原因是前序遍历列表中,第一个元素一定是根节点,剩余的元素是左子树的前序遍历+右子树的前序遍历列表,即前序遍历结构为:[root+[left+right]][root+[left+right]][root+[left+right]];而后序遍历结构为:[[left+right]+root][[left+right]+root][[left+right]+root],如果给定前序遍历和后序遍历结果,仅能推断出来的是谁是当前树的根结点,谁.原创 2021-02-14 22:01:24 · 368 阅读 · 1 评论 -
654.最大二叉树
题目链接递归思路首先求出给定列表的最大值,然后将其值作为根结点的值,然后将左子序列作为新列表递归传入函数中;将右子序列作为新列表递归传入函数中。class Solution: def constructMaximumBinaryTree(self, nums: List[int]) -> TreeNode: if nums == []: return None core = max(nums) core_index原创 2021-02-14 11:57:42 · 67 阅读 · 0 评论 -
114.二叉树展开为链表
题目链接将左边展开->右边展开->左边放到右边->左边置None。if root is not None: self.flatten(root.left) #先展平左子树 self.flatten(root.right) #再展平右子树 temp = root.left #存左子树 if temp is not None: while temp.right is not None: #找到左子树的底部 temp = temp.right原创 2021-02-13 16:00:41 · 65 阅读 · 0 评论 -
116.填充每一个节点的next指针
题目链接题解递归算法递归算法就需要思考整个流程能否分割成若干个小项目,将小项目完成并联合起来就完成了大项目,所以将问题细化的思维很重要。观察下面的这幅图:很容易得出规律是:每一个节点的左右子节点互相连接,然后得到这样的思路:connect(Node root) { if root is None { return root } # 每一个父节点的左右结点连接 root.left.next = root.right # 将左节点作为父节点重复上述步骤原创 2021-02-13 10:16:16 · 113 阅读 · 0 评论 -
226.翻转二叉树
链接:翻转二叉树前序遍历class Solution {public: TreeNode* invertTree(TreeNode* root) { if (root == nullptr) return nullptr; // 先处理根节点,即先序遍历 TreeNode* temp = root->right; // 保存右节点 root->right = root->left; root-&g原创 2021-02-11 13:46:57 · 75 阅读 · 0 评论 -
19:删除链表的第n个结点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?C++代码1:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullpt.原创 2021-02-02 15:17:37 · 633 阅读 · 0 评论 -
1468: 检查二叉树的平衡性
面试题 04.04. 检查平衡性实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。方法一:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self...原创 2020-05-01 20:12:41 · 259 阅读 · 0 评论 -
创建任意行任意列的螺旋矩阵
我的思路是利用递归实现,每一次传入未填充部分的左上角和右上角的坐标以及目前所到达的填充数值,即每一层递归仅填充最外层的部分,然后将内部传进去,上代码:import numpy as npin1 = input('输入矩阵形状m行n列,并用空格隔开:')in1 = in1.split(' ')r, c = int(in1[0]), int(in1[1])in2 = input('输入要...原创 2020-04-13 23:14:20 · 296 阅读 · 0 评论 -
多种方法求二叉树的最大深度
方法一:from queue import dequeclass Solution: def maxDepth(self, root: TreeNode) -> int: if root is None: return 0 q = deque() q.append(root) height...原创 2020-04-11 12:16:20 · 207 阅读 · 0 评论 -
102.二叉树的层序遍历:
这道题如果不看它要求的最终输出结果的形式,其实是非常简单的,麻烦就麻烦在它限定了输出的形式:要将每一层的数据放在一个列表中,如果仅仅是层次遍历的话,这么写就OK了:def levelOrder(root): rootList = [] lyst = [] while rootList: top = rootList.pop(0) lyst.append(top.val...原创 2020-04-09 21:16:09 · 124 阅读 · 0 评论 -
对称二叉树
方法一:迭代实现class Solution(object): def isSymmetric(self, root): """ :type root: TreeNode :rtype: bool """ queue = [root] while(que...原创 2020-04-08 14:40:03 · 100 阅读 · 0 评论 -
最长回文子串
这道题我的代码如下:class Solution: def longestPalindrome(self, s: str) -> str: length = len(s) if length == 1 or length == 0: return s lyst = [] for i in ra...原创 2020-03-30 22:36:41 · 92 阅读 · 0 评论 -
无重复字符的最长子串
这道题我一开始的代码是这样的:class Solution: def __init__(self): self.lenth_of_str = [0] def lengthOfLongestSubstring(self, s): son_s = s while son_s != "": key_char =...原创 2020-03-27 20:38:40 · 89 阅读 · 0 评论 -
两数之和(链表储存)
题意我看了很久才理解,就是这个函数传入两个链表,需要我们将相加之后的结果储存在链表中,然后将链表返回。输入的链表比如上面的示例,2和5分别是两个链表的最低位。即从左到右是从低位到高位。我的思路是将两个链表从对低位对齐,逐位相加,用C储存是否有进位的信息,如果两个链表的长度不等,再在判断是否有进位的同时将较长的链表的剩余位数加进l3链表中。# Definition for singly-lin...原创 2020-03-25 17:02:09 · 302 阅读 · 0 评论 -
两数之和
题目如此描述,我一开始的代码如下:class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: for i in range(len(nums)): if i > target: nums[i] = None ...原创 2020-03-23 11:57:11 · 130 阅读 · 0 评论