随笔分类 - LeetCode
LeetCode笔记
摘要:剑指Offer_#39_数组中出现次数超过一半的数字剑指offerContents题目解答解法1:HashMap统计数字出现次数解法2:排序解法3:摩尔投票法 题目数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1 map = new ...
阅读全文
摘要:剑指Offer_#38_字符串的排列(LeetCode#47_全排列 II) Contents 题目思路分析全排列重复字符的处理方法1:交换元素方法2:全排列II方法3:HashSet暴力去重(不推荐)总结 题目 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,
阅读全文
摘要:剑指Offer_#37 序列化二叉树剑指offerContents题目思路分析题意分析思路解法1:层序遍历(BFS)解法2:前序遍历解答解答1:层序遍历解答2:前序遍历Java基础:值传递和引用传递 题目请实现两个函数,分别用来序列化和反序列化二叉树。示例: 你可以将以下二叉树: 1 / \ 2 3 / \ 4 5序列化为 "[1,2,3,null,null,...
阅读全文
摘要:剑指Offer_#36_二叉搜索树与双向链表剑指offerContents题目思路分析解答 题目输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,...
阅读全文
摘要:剑指Offer_#35_复杂链表的复制剑指offer Contents 题目思路分析方法1:哈希表方法2:原地修改链表解答解答1:哈希表复杂度分析解答2:原地修改链表复杂度分析TIP:避免链表迭代中的空指针异常解答3:代码优化 题目 请实现 copyRandomList 函数,复制一个复杂链表。在复
阅读全文
摘要:剑指Offer_#34_二叉树中和为某一值的路径剑指offer Contents 题目思路分析解答写法1:递减写法2:累加 题目 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。 示例: 给定如下二叉树,以及目标和 s
阅读全文
摘要:剑指Offer_#33_二叉搜索树的后续遍历剑指offer Contents 题目思路分析二叉搜索树(二叉查找树)思路算法流程解答1解答2 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考
阅读全文
摘要:剑指Offer_#32_从上到下打印二叉树剑指offerContents剑指Offer32-I:不分行从上到下打印二叉树题目思路分析算法流程解答剑指Offer32-II:分行从上到下打印二叉树题目思路分析解答剑指Offer32-III:之字形从上到下打印二叉树题目思路分析解答这一题有三个变式,题目有细微差别. 剑指Offer32-I:不分行从上到下打印二叉树 题目从上到下打印出二叉树的每个节...
阅读全文
摘要:剑指Offer_#31_栈的压入、弹出序列剑指offerContents题目思路分析解答 题目输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输...
阅读全文
摘要:剑指Offer_#30_包含min函数的栈剑指offerContents题目思路分析各个函数的设计解答 题目定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(...
阅读全文
摘要:剑指Offer_#29_顺时针打印矩阵剑指offer Contents 题目思路分析解答1:剑指Offer书上的解答解答2:更简洁的代码 题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出
阅读全文
摘要:剑指Offer_#27_二叉树的镜像剑指offer Contents 题目思路分析算法流程方法1:递归方法2:迭代(栈辅助)算法流程解答1:递归代码1:分治写法,返回值为TreeNode代码2:常规递归写法,返回值为void代码3:更加优雅的写法解答2:迭代(栈辅助) 题目 请完成一个函数,输入一个
阅读全文
摘要:剑指Offer_#26_树的子结构剑指offer Contents 题目思路分析题意分析思路步骤1:遍历A寻找相同节点步骤2:遍历A和B判断子树结构是否相同写法1:逆向思维,如果从来没有不相同的节点,所有节点都相同写法2:正向思维,如果每个节点都相同,那么所有节点相同解答解答1:逆向思维解答2:正向
阅读全文
摘要:Leetcode Notes_#141,#142_环形链表(剑指Offer#23)剑指offerLeetCodeContentsLeetcode #141 环形链表题目思路分析双指针法解答Leetcode #142 环形链表II题目方法1:三步走解答方法2:更简洁的解法,两步走解答剑指Offer#23 链表中环的入口节点剑指Offer#23,Leetcode上面没有,是在牛客上做的,链接:链表中...
阅读全文
摘要:剑指Offer_#22_链表中倒数第k个节点剑指offer Contents 题目思路分析简单思路快慢双指针解答复杂度分析 题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是
阅读全文
摘要:剑指Offer_#21_调整数组顺序使奇数位于偶数前面剑指offer Contents 题目思路分析1.暴力循环2.左右双指针3.左右双指针+临时数组4.快慢双指针解答1.左右双指针 题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半
阅读全文
摘要:剑指Offer_#20_表示数值的字符串剑指offer Contents 题目思路分析算法思路解答复杂度分析 题目 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、"5e2"、"-123"、"3.1416"、"0123"都表示数值,但"12e"、"1a3.14"
阅读全文
摘要:剑指Offer_#19_正则表达式匹配剑指offer Contents 题目思路分析解答1:动态规划代码1:从dp[0][0]开始状态转移复杂度分析代码2:从dp[1][1]开始状态转移解答2:递归递归思路递归算法分析复杂度分析 题目 请实现一个函数用来匹配包含'. '和'*'的正则表达式。模式中的
阅读全文
摘要:剑指Offer_#18_删除链表的节点 Contents 题目思路分析需要考虑的几个边界条件《剑指Offer》原题思路解答1:从前往后遍历节点复杂度分析解答2:剑指Offer原题解法复杂度分析另附测试代码 题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的
阅读全文
摘要:剑指Offer_#17_打印从1到最大的n位数剑指offer Contents 题目思路分析方法1:字符全排列(考虑大数问题)方法2:用字符串表示数字,模拟数字加法解答1:循环打印(不考虑大数问题)解答2:字符全排列(考虑大数问题)一种比较直观的去0方法解答3:字符串表示数字(考虑大数问题) 题目
阅读全文

浙公网安备 33010602011771号