随笔分类 - LeetCode
LeetCode笔记
摘要:剑指Offer_#6_从尾到头打印链表剑指offerContents题目思路分析方法1:辅助栈方法2:递归算法流程解答解答1:辅助栈复杂度分析解答2:递归复杂度分析 题目输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 stack = new Stack(); while(head !=...
阅读全文
摘要:剑指Offer_#5_替换空格剑指offerContents题目思路分析思路方法1:char数组方法2:StringBuilder解答解答1:char数组复杂度分析解答2:StringBuilder复杂度分析 题目请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长...
阅读全文
摘要:剑指Offer_#4_二维数组中的查找剑指offerContents题目思路分析方法1:暴力搜索方法2:从右上角(左下角)开始查找解答解答1:暴力搜索复杂度分析关于数组和null解答2:从右上角开始查找复杂度分析 题目在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整...
阅读全文
摘要:剑指Offer_#3_数组中重复的数字剑指offer Contents 题目思路分析方法1:使用HashSet或HashMap方法2:原地交换数组元素方法3:排序后比较相邻元素解答解答1:使用HashSet复杂度分析关于HashSet解答2:原地交换数组元素复杂度分析解答3:排序后比较相邻元素复杂度
阅读全文
摘要:剑指Offer_#68-I_二叉搜索树的最近公共祖先剑指offerContents题目思路分析最近公共祖先算法流程解答解答1:迭代复杂度分析解答2:递归复杂度分析 题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以...
阅读全文
摘要:剑指Offer_#66_构建乘积数组剑指offerContents题目思路分析用除法的解法不用除法的解法解答解答1:较直观的写法复杂度分析解答2:优化空间复杂度复杂度分析 题目给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B 中的元素 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。示例:输入: [1,2,...
阅读全文
摘要:剑指Offer_#65_不用加减乘除做加法剑指offerContents题目思路分析解答复杂度分析 题目写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例:输入: a = 1, b = 1输出: 2提示:a, b 均可能是负数或 0结果不会溢出 32 位整数 思路分析又是一道脑筋急转弯的题目。不能用加减乘除运算,就只能用二进制位运算了。思路...
阅读全文
摘要:剑指Offer_#64_求1+2+…+n剑指offerContents题目思路分析方法1:等差数列求和公式方法2:迭代累加方法3:递归方法4:利用&&运算符的短路效应终止递归解答复杂度分析 题目求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6示例 2:输入: n ...
阅读全文
摘要:剑指Offer_#63_股票的最大利润剑指offerContents题目思路分析暴力搜索优化算法解答 题目假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。 注意利润不能是 ...
阅读全文
摘要:剑指Offer_#62_圆圈中最后剩下的数字剑指offerContents题目思路分析方法1:模拟法方法2:数学公式法解答解答1:模拟法复杂度分析解答2:数学公式法复杂度分析 题目0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数...
阅读全文
摘要:剑指Offer_#61_扑克牌中的顺子剑指offer Contents 题目思路分析顺子的判断方法方法1:比较0的个数与间隔个数方法2:HashSet方法解答解答1:比较0的个数和间隔的个数复杂度分析解答2:利用HashSet判断重复复杂度分析 题目 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这
阅读全文
摘要:剑指Offer_#59-II_队列的最大值Contents题目思路分析解答复杂度分析 题目请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入: ["MaxQueue","push_back","...
阅读全文
摘要:剑指Offer_#59-I_滑动窗口的最大值(LeetCode#239)剑指offer Contents 题目方法1:双端队列解答1:双端队列复杂度分析方法2:大根堆(优先队列)严格维护滑动窗口优化的代码(避免使用remove())复杂度分析方法3:分块求前缀最大值及后缀最大值复杂度分析 题目 给定
阅读全文
摘要:剑指Offer_#58 - I. 翻转单词顺序剑指offerContents题目思路分析解答解答1:split()分词复杂度分析解答2:双指针遍历分词(从后向前)复杂度分析 题目输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。示例 1:输入: "...
阅读全文
摘要:剑指Offer_#68-II_二叉树的最近公共祖先剑指offerContents题目思路分析最近公共祖先思路1:递归后序遍历终止条件递推过程返回值思路2:到p,q的路径的最后共同节点解答解答1:递归后序遍历复杂度分析解答2:到p,q的路径的最后共同节点复杂度分析 题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最...
阅读全文
摘要:剑指Offer_#67_把字符串转换成整数剑指offerContents题目思路分析解答复杂度分析 题目写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号...
阅读全文
摘要:剑指Offer_#57_和为s的两个数字剑指offerContents题目思路分析解答复杂度分析 题目输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47...
阅读全文
摘要:剑指Offer_#60_n个骰子的点数剑指offer Contents 题目思路分析可以观察到的规律方法1:递归方法2:动态规划解答解法1:递归解法2:动态规划解法3:进一步精简代码 题目 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮
阅读全文
摘要:剑指Offer_#56-II_ 数组中数字出现的次数II剑指offerContents题目思路分析算法流程解答复杂度分析 题目在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums = [3,4,3,3]输出:4示例 2:输入:nums = [9,1,7,9,7,9,7]输出:1限制:1 >= 1; }...
阅读全文
摘要:剑指Offer_#56-I_数组中数字出现的次数剑指offerContents题目思路分析异或运算的性质算法流程解答复杂度分析 题目一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,...
阅读全文

浙公网安备 33010602011771号