LeetCode
平时刷leetcode做的总结和复习
October-11
这个作者很懒,什么都没留下…
展开
-
leetocde 233 剑指offer 面试题43. 1~n整数中1出现的次数
题干:输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。示例 1:输入:n = 12输出:5示例 2:输入:n = 13输出:6限制:1 <= n < 2^31解题思路:重点在于如何判断每一位上1出现的次数与他所在位的数学关系,可以理解为,假设有一个数n = 28032,设cur = 0是n的百位,digtal = 100,将n分成a = 281, b = 32,原创 2020-06-18 22:26:11 · 120 阅读 · 0 评论 -
leetcode102 剑指offer 面试题32 - II. 从上到下打印二叉树 II
题干:从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果:[ [3], [9,20], [15,7]]提示:节点总数 <= 1000解题思路:核心步骤和之前的面试题31差不多,不同的地方在于,打印方式是一个二维数组,且每行的长度不同,用c语言比较难以处理,要不断的赋值和原创 2020-06-15 19:50:36 · 210 阅读 · 0 评论 -
剑指offer 面试题32 - I. 从上到下打印二叉树
题干:从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回:[3,9,20,15,7]提示:节点总数 <= 1000解题思路:一层一层打印,这样的题目是典型的广度优先搜索的题目。两种方法:1.由于C语言中没用队列操作函数,需要自己写一个队列函数,用两个栈实现队列先进先出的特性,基本等于从零开始,用这种方法相原创 2020-06-15 19:09:05 · 181 阅读 · 0 评论 -
leetcode 79 剑指offer 面试题12. 矩阵中的路径
题干:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[["a","b","c","e"],["s","f","c","s"],["a","d","e","e"]]但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第一原创 2020-06-07 19:50:32 · 177 阅读 · 0 评论 -
leetcode 剑指offer 面试题09. 用两个栈实现队列
题干:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )。示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","deleteHead","appendTai原创 2020-06-07 19:25:45 · 221 阅读 · 0 评论 -
leetcode 剑指offer 面试题68 - II. 二叉树的最近公共祖先
题干:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5原创 2020-06-04 20:08:54 · 207 阅读 · 0 评论 -
leetcode 剑指offer 面试题38. 字符串的排列
题干:输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]限制:1 <= s 的长度 <= 8解题思路:本身是一个全排列的问题,字符型全排列较之数字型全排列稍微有些麻烦,但是基本思路一致,采用回溯思想,将每个数字分别放到第一位,并将后面的数字进行全排列。需要注意的是,如果输入abb类型的字符,全排列会出现重复,去原创 2020-06-04 19:57:06 · 260 阅读 · 1 评论 -
leetcode 剑指offer 面试题07. 重建二叉树
题干:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7限制:0 <= 节点个数 <= 5000解题思路:需要理解前序遍历、中序遍历、后序遍历的排列方法。通过前序遍历头节点一定是根节点,搜索中序遍原创 2020-06-04 18:14:31 · 205 阅读 · 0 评论 -
leetcode剑指offer 面试题60. n个骰子的点数
题干:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。示例 1:输入: 1输出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]示例 2:输入: 2输出: [0.02778,0.05556,0.08333,0.11111,0.13889,0.16667,0.13889,0.11111原创 2020-06-02 18:16:47 · 210 阅读 · 0 评论 -
leetcode 剑指offer 面试题61. 扑克牌中的顺子
题干:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例 1:输入: [1,2,3,4,5]输出: True 示例 2:输入: [0,0,1,2,5]输出: True限制:数组长度为 5 ;数组的数取值为 [0, 13] ;解题思路:本题的解题重点在于,除去大小王可看作任意数外,其他的数中,最大值减去最小值应当小于5,即max - min &l原创 2020-06-02 17:47:23 · 148 阅读 · 0 评论 -
leetcode 剑指offer 面试题59 - I. 滑动窗口的最大值
题干:给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 3 1 3 [-1 -3原创 2020-06-01 19:59:57 · 333 阅读 · 0 评论 -
leetcode 剑指offer面试题58 - I. 翻转单词顺序
题干:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。示例 1:输入: "the sky is blue"输出: "blue is sky the"示例 2:输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: "a原创 2020-05-31 22:08:04 · 164 阅读 · 0 评论 -
leetcode 剑指offer面试题40. 最小的k个数
题干:输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]限制:0 <= k <= arr.length <= 100000 <= arr[i] <= 10000解题方法:1.快速排序:将给出的数组由小到大排原创 2020-05-29 22:24:55 · 168 阅读 · 0 评论 -
leetcode剑指offer面试题55 - I. 二叉树的深度
题干:输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。解题方法:1.广度优先搜索:解答树上结点的扩展是按它们在树中的层次进行的。首先生成第一层结点,同时检查目标结点是否在所生成的结点中,如果不在,则将所有的第一层结点逐一扩展,得到第二层结点,并检原创 2020-05-29 15:23:42 · 181 阅读 · 0 评论 -
leetcode 剑指offer面试题06,从头到尾打印链表
leetcode 剑指offer面试题06,从头到尾打印链表题干:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。输入:head = [1,3,2]输出:[2,3,1]解题思路:两种方法1.对链表进行反转,然后输出数据2.先求出链表的长度,然后将数据写入数组中,倒序打印数组。反转链表的方法:参考(https://blog.csdn.net/qq_42351880/article/details/88637387) //反转数组int* reversePrint(st原创 2020-05-29 15:01:01 · 208 阅读 · 0 评论