leetcode做题笔记
记录做过的leetcode的题目,自己做的和官方代码比较一下,找出自己代码的不足之处。
凡麓清心
这个作者很懒,什么都没留下…
展开
-
力扣138-复制带随机指针的链表(难度:中等)
题目要求:给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的深拷贝。深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> ..原创 2021-04-14 16:59:04 · 1278 阅读 · 0 评论 -
力扣24-两两交换链表中的节点
难度:中等。题目要求及示例:在做题之前先把思路理清楚,不同情况不同解决方法,可以通过画图来梳理思路。开头的两个节点和后面节点的处理方法不同,开头节点需要记录交换后的头结点。注意链表节点总个数是奇数时,最后一个结点的处理。# Definition for singly-linked list.# class ListNode(object):# def __init__(self, val=0, next=None):# self.val = val#原创 2021-03-20 16:14:12 · 132 阅读 · 0 评论 -
力扣21-合并两个有序链表
难度:简单题目要求:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是[0, 50] -100 <= Node.val <= 100 l1和l2均按非...原创 2021-03-17 15:38:28 · 136 阅读 · 0 评论 -
34-在排序数组中查找元素的第一个和最后一个位置
难度:中等题目要求:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回[-1, -1]。进阶:你可以设计并实现时间复杂度为O(log n)的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 ...原创 2021-01-20 23:03:04 · 108 阅读 · 0 评论 -
力扣26. 删除排序数组中的重复项
难度:简单给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该...原创 2021-01-08 19:56:59 · 92 阅读 · 0 评论 -
1365.有多少小于当前数字的数字(难度:简单)
题目要求:给你一个数组nums,对于其中每个元素nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个nums[i]你必须计算出有效的j的数量,其中 j 满足j != i 且 nums[j] < nums[i]。以数组形式返回答案。示例 1:输入:nums = [8,1,2,2,3]输出:[4,0,1,1,3]解释:对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。对于 nums[1]=1 不存在比它小的数字。对...原创 2020-11-09 20:14:42 · 89 阅读 · 0 评论 -
1275.找出井字棋的获胜者 (难度:简单)
题目要求:A 和B在一个3x3的网格上玩井字棋。井字棋游戏的规则如下:玩家轮流将棋子放在空方格 (" ") 上。第一个玩家 A 总是用"X" 作为棋子,而第二个玩家 B 总是用 "O" 作为棋子。"X" 和 "O" 只能放在空方格中,而不能放在已经被占用的方格上。只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。如果所有方块都放满棋子(不为空),游戏也会结束。游戏结束后,棋子无法再进行任何移动。给你一个数组 moves,其中每个元素是大小为 2...原创 2020-11-03 20:23:47 · 245 阅读 · 0 评论 -
589.N叉树的前序遍历
难度:简单题目要求:给定一个 N 叉树,返回其节点值的前序遍历。例如:给定一个3叉树:返回其前序遍历:[1,3,5,6,2,4]。原创 2020-10-16 21:01:33 · 95 阅读 · 1 评论 -
110. 平衡二叉树
难度:简单给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4]返回false 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/balanced-binary-t...原创 2020-08-18 12:25:08 · 139 阅读 · 0 评论 -
LCP 12. 小张刷题计划
难度:中等为了提高自己的代码能力,小张制定了 LeetCode 刷题计划,他选中了 LeetCode 题库中的 n 道题,编号从 0 到 n-1,并计划在 m 天内按照题目编号顺序刷完所有的题目(注意,小张不能用多天完成同一题)。在小张刷题计划中,小张需要用 time[i] 的时间完成编号 i 的题目。此外,小张还可以使用场外求助功能,通过询问他的好朋友小杨题目的解法,可以省去该题的做题时间。为了防止“小张刷题计划”变成“小杨刷题计划”,小张每天最多使用一次求助。我们定义 m 天中做题时间最多的原创 2020-08-16 16:37:36 · 245 阅读 · 1 评论