随笔分类 - LeetCode
LeetCode笔记
摘要:剑指Offer_#55 - II_平衡二叉树(LeetCode#110)剑指offerContents题目思路分析递归 vs 分治解答方法1:普通递归(自顶向下)算法流程解答1:普通递归(自顶向下)复杂度分析方法2:分治法(提前阻断,自底向上)分治法模板算法设计解答2:分治法(提前阻断,自底向上)复杂度分析参考 题目输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右...
阅读全文
摘要:剑指Offer_#55 - I_二叉树的深度剑指offerContents题目思路分析方法1:自底向上方法2:自顶向下解答解答1:自底向上解答2:自顶向下 题目输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 ...
阅读全文
摘要:剑指Offer_#54_二叉搜索树的第k大节点剑指offerContents题目思路分析解答 题目给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \...
阅读全文
摘要:剑指Offer_#53 - II_0~n-1中缺失的数字剑指offerContents题目思路分析解答 题目一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8限制:1 <=...
阅读全文
摘要:剑指Offer_#53 - I_在排序数组中查找数字剑指offer Contents 题目思路分析解答1:循环解答2:剑指Offer写法 题目 统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2: 输入:
阅读全文
摘要:剑指Offer_#52_两个链表的第一个公共节点剑指offerContents题目思路分析解答复杂度分析 题目输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 思路分析这题的难点在于,...
阅读全文
摘要:剑指Offer_#51_数组中的逆序对剑指offer Contents 题目思路分析解答更加精简的代码 题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 示例 1: 输入: [7,5,6,4] 输出: 5 限制: 0
阅读全文
摘要:剑指Offer_#50_第一个只出现一次的字符剑指offer Contents 题目思路分析解答复杂度分析 题目 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 示例: s = "abaccdeff" 返回 "b" s = "" 返回 " " 限制: 0
阅读全文
摘要:剑指Offer_#49_丑数剑指offer Contents 题目思路分析丑数的定义理解:暴力循环递推(通过已有的丑数找到新的丑数)复杂度分析思考:为什么不会漏掉丑数,或者出现重复的丑数? 题目 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n
阅读全文
摘要:剑指Offer_#48_最长不含重复字符的子字符串剑指offerContents题目思路分析动态规划解答复杂度分析 题目请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b...
阅读全文
摘要:LeetCode_#62#63_不同路径剑指offerContentsLeetCode_#62_不同路径题目思路分析解答LeetCode_#63_不同路径II题目思路分析解答 LeetCode_#62_不同路径 题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finis...
阅读全文
摘要:LeetCode_#64_最小路径和剑指offerContents题目思路分析解答 题目给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。 思路分析本题与剑指Offer_...
阅读全文
摘要:剑指Offer_#47_礼物的最大价值剑指offerContents题目思路分析动态规划解析解答复杂度分析 题目在一个 m* n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入: [ [1,3,1]...
阅读全文
摘要:剑指Offer_#46_把数字翻译成字符串剑指offerContents题目思路分析解答 题目给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译...
阅读全文
摘要:剑指Offer_#45_把数组排成最小的数剑指offerContents题目思路分析解答 题目输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: "102"示例 2:输入: [3,30,34,5,9]输出: "3033459"提示:0 y+x,判断为x>y,即a应该靠后;反之同理。如图 解答class Solu...
阅读全文
摘要:剑指Offer_#44_数字序列中某一位的数字剑指offerContents题目思路分析最直接的思路观察规律解答 题目数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。注意:这里的题目和测试用例不同,测试用例中数字序列是从1开始不是从0开始,所以...
阅读全文
摘要:剑指Offer_#43_1~n整数中1出现的次数剑指offerContents题目思路分析一个结论:如何数出每一位出现1的次数?寻找规律,总结为数学表达式cur == 0cur == 1cur > 1循环变量的初始化和更新解答 题目输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。示例 1...
阅读全文
摘要:剑指Offer_#42_连续子数组的最大和剑指offerContents题目思路分析方法1:暴力搜索方法2:分析规律得到启发式的算法方法3:动态规划解答解法1:暴力搜索解法2:观察规律解法3:动态规划 题目输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1...
阅读全文
摘要:剑指Offer_#41_ 数据流中的中位数剑指offerContents题目思路分析解答 题目如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操...
阅读全文
摘要:剑指Offer_#40_最小的k个数剑指offerContents题目思路分析方法1:利用快排中的切分partition()函数方法2:大根堆辅助(可用Java中的PriorityQueue实现)解答解法1:利用快排中的切分partition()函数复杂度分析解法2:大根堆辅助(可用Java中的PriorityQueue实现)复杂度分析 题目输入整数数组 arr ,找出其中最小的 k 个数。例...
阅读全文

浙公网安备 33010602011771号