leetcode HOT100刷题记录(一) 主要记录下leetcode hot100的刷题纪录,方便复习和回忆 使用的语言是python,暂时没有很详细的题解,等秋招结束会进行补充 大概24年3月份开始刷,零基础2个星期可以刷完第一遍,分为四个部分 leetcode HOT100刷题记录(二) leetcode HOT100刷题记录(三) leetcode HOT100刷题记录(四...
不同的二叉搜索树是一道动态规划的经典问题。这个问题要求计算由 1 到 n 组成的不同的二叉搜索树的数量。我们可以使用动态规划来解决这个问题。下面是用 Python 实现的解题代码: def numTrees(n): if n == 0 or n == 1: return 1 dp = [0] * (n + 1) dp[0] = 1 dp[1] = 1 for i in ...
226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例2: 输入:root = [2,1,3] 输出:[2,3,1] 示例3: 输入:root = [] 输出:[] 提示: 树中节点数目范围在 [0, 100] 内 -100 <= ...
但是,这种解法使用的是sort接口进行排序,并没有达到题目所要考查的目的——排序,所以这种解法仅提供参考。至于在Python中sort方法采用的是什么排序算法,及其时间复杂度多少,读者可自行前去了解。 第二种算法,我们可以尝试采用时间复杂度为O(m+n)O(m+n)的算法来解决。这也是我印象中,在严奶奶《数据结构》中有提...
【简单】【HOT100】 给定一个大小为n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例1: 输入:nums = [3,2,3] 输出:3 示例2: 输入:nums = [2,2,1,1,1,2,2] ...
这是LeetCode 热题 HOT 100中的第一道题,难度级别属于简单,也是每一位刷题er的入门必经之题,它的地位就等同于英语单词表中的abandon,算法记录的第一天就拿它开刀吧。 按照对这道题的正常思维,直接通过两层循环、一次判断就能完成任务,也就是我们常常提到的暴力解题,相关Python代码如下: ...
这里是 HOT 100刷题笔记,篇幅较长,因此分成两部分,按照题目序号排列。有几题没做后序会补上。 两数之和 比较好的办法就是利用map来存储每一个元素以及其对应的索引,但是这里要考虑到map是无法存储重复的key,因此我们在判断是否存在满足符合条件的,一个为原数组中的索引,另一个为Map中的索引这个一定要注意。
leetcode热题 HOT 100第二部分题解,按照题目序号排列。 二叉树的层序遍历 正常的层序遍历操作即可,但是需要记录每一层节点的数量。 # Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = NoneclassSolution:deflevelOrder(...
先刷热题 HOT 100,再刷精选 TOP 面试题,之后刷其他的题。 如果你时间比较充裕,那我建议你: 按从低到高的难度分组刷 按tag 分类刷 定期复习,重做之前刷过的题 掌握LeetCode 刷题方法再开始刷题,属于磨刀不误砍柴工。掌握正确方法是非常重要的。 如果你在刷题的时候发现怎么也写不出来,别担心,这是正常的...
(Python/Java/C++/C/Go/JS/Rust) 答疑问:是什么原因导致了这两种算法的快慢?答:我用「获取了多少信息」来解释。暴力做法每次拿两个数出来相加,和 target 比较,那么花费 O(1) 的时间,只获取了 O(1) 的信息。而哈希表做法,每次查询都能知道 O(n) 个数中是否有 target−nums[j],那么花费 O(1) 的...