菜鸟leetcode
文章平均质量分 63
码盲进化路
这个作者很懒,什么都没留下…
展开
-
TreeNode
可以使用前序遍历,这样才先优先左边搜索,然后记录深度最大的叶子节点,此时就是树的最后一行最左边的值。回溯法,一定要注意这种通过记录深度来找节点的题目。可以通过层序遍历的方式,获得每层最右边节点,效率更高的是通过后序遍历,保证同层先访问最右边节点。pair存储搜索二叉树的最小值和最大值,-1代表不是二叉搜索树(当树的参数值有-1就不行了)要注意为什么求高度的时候要做是否是平衡二叉树的判断,中序遍历下,输出的二叉搜索树节点的数值是有序序列。//注意不同递归方式,返回值不同。要找深度最大的叶子节点。...原创 2022-07-24 21:29:34 · 1981 阅读 · 0 评论 -
面试算法二叉树篇(1)
1.实现二叉树的先序、中序和后序遍历LeetCode 144. 二叉树的前序遍历//递归class Solution {public: void preorder(TreeNode* root, vector<int>& v){ if(root == nullptr){ return; } v.push_back(root->val); preorder(root->lef原创 2022-01-11 17:13:49 · 128 阅读 · 0 评论 -
剑指offer(1-20)
1.面试题三 数组中重复的数字题目一在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1法一、利用hashmap,bitset尤其适用于这种形式/*(O(n),O(n)) * 每个数字以O(1)的时间来判断哈希表 * 需要一个大小为O(n)的哈希表*/class原创 2021-12-29 16:41:04 · 316 阅读 · 0 评论 -
研究生菜鸟的leetcode起步第二天(链表基本操作篇)
研究生菜鸟的leetcode起步第二天一、链表的特点访问 O(N)搜索 O(N)插入 O(1)删除 O(1) 写很快,读很慢,适合读多写少的场景。二、链表的常用操作创建链表添加元素(LinkedList中的add操作时间复杂度其实是O(N)的,因为需要先查找的需要插入的位置,删除也同理。)访问元素查找元素删除元素链表的长度三、 leetcode练习leetcode 第203题 该题要求对链表做出删除的操作,需要对链表进行遍原创 2021-03-15 21:15:01 · 137 阅读 · 0 评论 -
研究生菜鸟的leetcode起步第一天(数组基本操作篇)
研究生菜鸟的leetcode起步第一天一、数组的基本操作leetcode 第485题自己的想法 这里出现的问题主要是,当数组后面的元素都是1时,只进行start++操作,而无法计入n中,因此做出了改进,增加了到数组末尾的判断条件。class Solution { public int findMaxConsecutiveOnes(int[] nums) { int n=0; int start=0; for(int i = 0;i <原创 2021-03-09 21:44:15 · 133 阅读 · 0 评论