
剑指offer
文章平均质量分 70
ccluqh
这个作者很懒,什么都没留下…
展开
-
剑指offer10- II. 青蛙跳台阶问题
1.题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1提示:0 <= n <= 100注意:本题与主站 70 题相同:https://leetcode-cn.com/problems/climbi.原创 2021-08-26 20:03:59 · 138 阅读 · 0 评论 -
剑指offer/leetcode21. 合并两个有序链表
1.题目描述将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-...原创 2020-04-05 16:32:23 · 218 阅读 · 0 评论 -
剑指offer.左旋转字符串Python「字节跳动」
1.题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!2.解题思路就是将原数组,分为两个部分,分别将这两个部分逆序,然后再将合并后的字符...原创 2020-04-04 17:42:57 · 253 阅读 · 0 评论 -
leetcode8. 字符串转换整数 (atoi)「2020-0403」
1.题目描述请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之...原创 2020-04-03 18:43:35 · 204 阅读 · 0 评论 -
剑指offer27. 二叉树的镜像/leetcode226. 翻转二叉树
1.题目描述翻转一棵二叉树。示例:输入: 4 / \ 2 7/ \ / \1 3 6 9输出: 4 / \ 7 2/ \ / \9 6 3 1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/invert-b...原创 2020-03-23 13:53:38 · 240 阅读 · 0 评论 -
剑指offer/leetcode225.用队列实现栈
1.题目描述使用队列实现栈的下列操作:push(x) -- 元素 x 入栈pop() -- 移除栈顶元素top() -- 获取栈顶元素empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是push to back, peek/pop from front, size, 和is empty这些操作是合法的。你所使用的语言也许不支持队列。你可以使...原创 2020-02-27 20:46:14 · 166 阅读 · 0 评论 -
剑指offer.用两个栈实现队列
1.题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。2.解题思路入队:将元素进栈A出队:判断栈B是否为空,如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈;如果不为空,栈B直接出栈。3.代码实现# -*- coding:utf-8 -*-class Solution: def __init__(self)...原创 2020-02-27 20:07:03 · 124 阅读 · 0 评论 -
剑指offer.数组中只出现一次的数字「趋势科技」
1.题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。2.解题思路链接:https://www.nowcoder.com/questionTerminal/e02fdb54d7524710a7d664d082bb7811?f=discussion来源:牛客网首先:位运算中异或的性质:两个相同数字异或=0,一个数和0异或还是它本...原创 2020-02-23 14:37:05 · 102 阅读 · 0 评论 -
剑指offer.数组中出现次数超过一半的数字、在数组中找到出现次数大于n/k的数
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解题思路思路一:基于快排思想思路二:如果有符合条件的数字,则它出现的次数比其他所有数字出现的次数和还要多。在遍历数组时保存两个值:一是数组中一个数字,一是次数。遍...原创 2020-02-22 20:32:19 · 275 阅读 · 0 评论 -
剑指offer.二维数组中的查找
1.题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数2.解题思路利用二维数组由上到下,由左到右递增的规律,那么选取右上角或者左下角的元素a[row][col]与target进行比较,当target小于元素a[row][col]...原创 2020-02-15 17:02:19 · 99 阅读 · 0 评论 -
剑指offer31.栈的压入、弹出序列
1,题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)2.解题思路准备一个stack,将pushV里的元素依次入栈,直到st...原创 2020-02-14 10:13:31 · 115 阅读 · 0 评论 -
剑指offer56.数组中唯一只出现一次的数字
1.题目描述在一个数组中除了一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。2.解题思路将所有出现三次数字的二进制表示的对应位都加起来,每一位的和都能被3整除。将所有数字的二进制表示的对应位都加起来,如果某一位能被三整除,那么只出现一次的数字在该位为0;反之,为1。3.代码实现class Solution(object): def fin...原创 2020-01-05 20:59:00 · 208 阅读 · 0 评论 -
leetcode297/剑指offer37.二叉树的序列化与反序列化
1.题目描述序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以...原创 2020-01-05 20:38:08 · 204 阅读 · 0 评论 -
leetcode169/剑指offer39.多数元素
1.题目描述给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 22.解题思路方法一:所求为中位数,利用快速排序,在O(n)时间内找到数组中第k大的数...原创 2019-11-28 21:33:12 · 191 阅读 · 1 评论 -
剑指offer14.剪绳子
1.题目描述来源:2.解题思路3.代码实现# -*- coding:utf-8 -*-class Solution: def cutRope(self, number): # write code here if number==2: return 1 if number==3: ...原创 2019-12-24 21:16:17 · 182 阅读 · 0 评论 -
剑指offer62.圆圈中最后剩下的数字「百度面试题」
1.题目描述2.解题思路3.代码实现# -*- coding:utf-8 -*-class Solution: def LastRemaining_Solution(self, n, m): # write code here if n<1 or m<1: return -1 l...原创 2019-12-24 11:19:16 · 126 阅读 · 0 评论 -
剑指offer60.n个骰子的点数
1.题目描述把 n 个骰子仍在地上,求点数和为 s 的概率。扔n个骰子,向上面的数字之和为S。给定n,请列出所有可能的S值及其相应的概率。样例1:输入:n = 1 输出:[[1, 0.17], [2, 0.17], [3, 0.17], [4, 0.17], [5, 0.17], [6, 0.17]] 解释:掷一次骰子,向上的数字和可能为1,2,3,4,5,6,出...原创 2019-12-19 17:51:38 · 114 阅读 · 0 评论 -
剑指offer59.滑动窗口的最大值/239.滑动窗口最大值
1.题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6]...原创 2019-12-19 16:50:47 · 182 阅读 · 0 评论 -
leetcode105/剑指offer7.从前序与中序遍历序列构造二叉树/程序员代码面试指南.通过先序和中序数组生成后序数组
题目一:从前序与中序遍历序列构造二叉树1.题目描述根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 72.解题思路...原创 2019-11-05 19:38:55 · 267 阅读 · 0 评论 -
剑指offer51.数组中的逆序对
1.题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%10000000072.解题思路归并思想解法二:但是在牛客网的时间复杂度超时参考:https://blog.youkuaiyun.com/lzq20115395/art...原创 2019-12-19 13:49:44 · 229 阅读 · 0 评论 -
剑指offer26.树的子结构
1.题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)2.解题思路首先第一步在树A中查找与B根节点的值一样的节点:递归思想,如果根节点相同则递归调用isPart(),如果根节点不相同,则判断tree1的左子树和tree2是否相同,再判断右子树和tree2是否相同第二步就是判断树A中以R为根节点的子树是不是和树B具有相同的结构。...原创 2019-12-19 12:45:32 · 121 阅读 · 0 评论 -
leetcode70/剑指offer10.爬楼梯
1.题目描述假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 ...原创 2019-12-19 12:35:52 · 165 阅读 · 0 评论 -
剑指offer8.二叉树的下一个节点「微软面试题」
1.题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。2.解题思路3.代码实现# -*- coding:utf-8 -*-# class TreeLinkNode:# def __init__(self, x):# self.val = x# ...原创 2019-12-18 18:16:37 · 107 阅读 · 0 评论 -
剑指offer21.调整数组顺序使奇数位于偶数前面「字节跳动面试题」
1.题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。2.解题思路方法一:这个就是冒泡排序的思路,可以自己再纸上画一画。首先确定外层循环次数,即array.size(),然后进行内层循环,代码中是从后面往前面排序,比如2,1,4,3。如果满足前偶后奇数,交...原创 2019-12-18 17:43:41 · 121 阅读 · 0 评论 -
剑指offer11.旋转数组的最小数字/leetcode153.寻找旋转排序数组中的最小值
1.题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。2.解题思路二分查找记录有序区间的第一个数字,来不断更新最小的结果作为答案。注意rig...原创 2019-12-18 17:24:07 · 135 阅读 · 0 评论 -
leetcode53/剑指offer.最大子序和
1.题目描述给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。2.解题思路3.代码实现clas...原创 2019-12-18 14:24:59 · 139 阅读 · 0 评论 -
leetcode295/剑指offer41.数据流的中位数
1.题目描述中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4]的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。...原创 2019-12-17 15:08:02 · 193 阅读 · 0 评论 -
剑指offer36.二叉搜索树与双向链表
1.题目描述2.解题思路假设递归函数返回一个pair(N1,N2),分别指的是当前子树的最左侧的节点和当前子树的最右侧节点,中间的点先不用管。参考视频:https://www.acwing.com/video/173/具体看代码3.代码实现# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x...原创 2019-12-16 22:06:29 · 134 阅读 · 0 评论 -
leetcode138/剑指offer35.复制带随机指针的链表
1.题目描述给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。示例:输入:{"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random":{"$ref":"2"},"val":1}解释:节点 1 的值是 ...原创 2019-12-16 21:44:16 · 108 阅读 · 0 评论 -
leetcode52/剑指offer38拓展.N皇后 II 、leetcode51.N皇后、leetcode46/剑指offer38.全排列
题目一:N皇后 II1.题目描述n皇后问题研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。示例:输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[[".Q..", // 解法 1"...Q","Q...",...原创 2019-12-14 16:44:53 · 260 阅读 · 0 评论 -
leetcode235.二叉搜索树的最近公共祖先/leetcode236. 二叉树的最近公共祖先/剑指offer68
题目一:leetcode235.二叉搜索树的最近公共祖先1.题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树:root =[6,2,8,0,4,...原创 2019-12-12 19:57:59 · 263 阅读 · 0 评论 -
leetcode54/剑指offer29.螺旋矩阵(字节跳动面试题、VIVO面试题)、leetcode59.螺旋矩阵 II
题目一:leetcode54.螺旋矩阵1.题目描述给定一个包含m x n个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例2:输入:[ [1, 2, 3, 4], [5, 6...原创 2019-12-12 14:21:00 · 370 阅读 · 0 评论 -
leetcode237/剑指offer18.删除链表中的节点
1.题目描述请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 --head =[4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -&g...原创 2019-12-10 16:43:39 · 101 阅读 · 0 评论 -
leetcode191/剑指offer15.二进制位1的个数、leetcode461.汉明距离
题目一1.题目描述编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011中,共有三位为 '1'。示例 2:输入:00000000000000...原创 2019-12-04 14:44:23 · 178 阅读 · 0 评论 -
leetcode238/剑指offer66.除自身以外数组的乘积
1.题目描述给定长度为n的整数数组nums,其中n > 1,返回输出数组output,其中 output[i]等于nums中除nums[i]之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复...原创 2019-11-30 17:23:18 · 130 阅读 · 0 评论 -
leetcode79/剑指offer12.单词搜索
1.题目描述给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word ...原创 2019-11-29 21:59:42 · 136 阅读 · 0 评论 -
leetcode155/剑指offer30.最小栈
1.题目描述设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)-- 将元素 x 推入栈中。pop()-- 删除栈顶的元素。top()-- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStac...原创 2019-11-29 18:09:34 · 150 阅读 · 0 评论 -
leetcode101/剑指offer28.对称二叉树
1.题目描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3说明:如果你可以运用...原创 2019-11-25 15:57:27 · 159 阅读 · 0 评论 -
leetcode19.删除链表的倒数第N个节点/剑指offer22.链表中倒数第k个节点
题目一1.题目描述给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?2.解题思路使用快慢指针...原创 2019-11-20 20:00:22 · 151 阅读 · 0 评论 -
剑指offer18.删除链表中重复的节点(全部删掉)
1.题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。样例1输入:1->2->3->3->4->4->5输出:1->2->5样例2输入:1->1->1->2->3输出:2->32.解题思路因为可能会把头节点删掉,所以要插入一个虚拟头节点...原创 2019-11-14 22:05:36 · 157 阅读 · 0 评论