
剑指Offer
七小琦
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指Offer42:连续子数组的最大和
剑指Offer42:连续子数组的最大和1.题目HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为...原创 2019-12-31 09:58:20 · 120 阅读 · 0 评论 -
剑指Offer31:整数中1出现的次数(从1到n整数中1出现的次数)
剑指Offer31:整数中1出现的次数(从1到n整数中1出现的次数)1.题目求出1 ~ 13的整数中1出现的次数,并算出100 ~ 1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)...原创 2019-12-17 11:31:26 · 140 阅读 · 0 评论 -
剑指Offer7:裴波那契数列
剑指Offer7:裴波那契数列1.题目大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=392.思路①:最直接常见的想法就是递归,然后从上往下返回,但是很浪费时间和空间,重复计算很对没用的数据②:从小往大迭代可以避免资源浪费3.代码① 从上往下调用(c++)class Solution {public: ...原创 2019-12-14 11:24:06 · 184 阅读 · 0 评论 -
剑指Offer44:翻转单词顺序列
剑指Offer44:翻转单词顺序列1.题目牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能...原创 2019-12-09 09:04:21 · 105 阅读 · 0 评论 -
剑指Offer22:从上往下打印二叉树
剑指Offe22:从上往下打印二叉树1.题目从上往下打印出二叉树的每个节点,同层节点从左至右打印。2.思路利用队列,依次将树节点放入队列,然后队列最开始的得节点得左右子节点进队列,将该节点POP()3.代码/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(i...原创 2019-12-09 09:03:09 · 133 阅读 · 0 评论 -
剑指Offer21:栈的压入、弹出序列
剑指Offe21:栈的压入、弹出序列1.题目输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)2.思路借用一个辅助的栈,遍历压栈顺序,先讲第...原创 2019-12-09 09:02:47 · 123 阅读 · 0 评论 -
剑指Offer20:包含min函数的栈
剑指Offe20:包含min函数的栈1.题目定义栈的数据结构,请在类型中实现一个能够得到栈最小元素的min函数。2.思路使用两个stack,一个为数据栈,另一个为辅助栈。数据栈用于存储所有数据,辅助栈用于存储最小值。3.代码class Solution {public: void push(int value) { Data.push(value); ...原创 2019-12-08 16:56:40 · 105 阅读 · 0 评论 -
剑指Offer19:顺时针打印矩阵
剑指Offe19:顺时针打印矩阵1.题目输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.2.思路将结果存入vector数组,从左到右,再从上到下,再从右到左,最后从下到上...原创 2019-12-08 16:56:08 · 128 阅读 · 0 评论 -
剑指Offer17:二叉树的镜像
剑指Offe17:二叉树的镜像1.题目操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ ...原创 2019-12-08 16:55:37 · 153 阅读 · 1 评论 -
剑指Offer16:合并两个排序的链表
剑指Offe16:合并两个排序的链表1.题目输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。2.思路先判断输入的链表是否为空的指针。如果第一个链表为空,则直接返回第二个链表;如果第二个链表为空,则直接返回第一个链表。如果两个链表都是空链表,合并的结果是得到一个空链表。两个链表都是排序好的,我们只需要从头遍历链表,判断当前指针,哪个链表中的值小,...原创 2019-12-08 16:55:06 · 130 阅读 · 0 评论 -
剑指Offer15:反转链表
剑指Offe15:反转链表1.题目输入一个链表,反转链表后,输出新链表的表头。2.思路借助四个指针,循环时用三个,最后输出指针用一个。3.代码/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {...原创 2019-12-08 16:54:34 · 165 阅读 · 0 评论 -
剑指Offer14:链表中倒数第k个结点
剑指Offe14:链表中倒数第k个结点1.题目输入一个链表,输出该链表中倒数第k个结点。2.思路我们可以定义两个指针。第一个指针从链表的头指针开始遍历向前走k-1,第二个指针保持不动;从第k步开始,第二个指针也开始从链表的头指针开始遍历。由于两个指针的距离保持在k-1,当第一个(走在前面的)指针到达链表的尾结点时,第二个指针(走在后面的)指针正好是倒数第k个结点。3.代码/*stru...原创 2019-12-08 16:53:57 · 136 阅读 · 0 评论 -
剑指Offer13:调整数组顺序使奇数位于偶数前面
剑指Offe13:调整数组顺序使奇数位于偶数前面1.题目输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。2.思路创建双向队列,遍历数组,奇数前插入,偶数后插入。最后使用assign方法实现不同容器但相容的类型赋值。知识点一:c++借助双向队列能从前、后分别插入数据的优势...原创 2019-12-08 16:53:21 · 141 阅读 · 0 评论 -
剑指Offer11:二进制中1的个数
剑指Offe11:二进制中1的个数1.题目输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。2.思路多余一个整数的二进制数进行减一操作,可以让他们从倒数第一个1开始不同,然后再减一,通过重复的相与操作,就可以得到答案3.代码class Solution {public: int NumberOf1(int n) { int count = ...原创 2019-12-08 09:47:17 · 150 阅读 · 0 评论 -
剑指Offer10:矩形覆盖
剑指Offe10:矩形覆盖1.题目我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?2.思路还是递归思想,换汤不换药3.代码# -*- coding:utf-8 -*-class Solution: def rectCover(self, number): if number <=...原创 2019-12-08 09:46:59 · 142 阅读 · 0 评论 -
剑指Offer9:变态跳台阶
剑指Offer9:变态跳台阶1.题目一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。2.思路看题目貌似是跳台阶的进阶版,正常都是寻找递归的方法,但是这个貌似没有递归可循,是用数学归纳法更为简单。f(n)= 2^(n-1)3.代码# -*- coding:utf-8 -*-class Solution: def j...原创 2019-12-08 09:46:45 · 128 阅读 · 1 评论 -
剑指Offer8:跳台阶
剑指Offer8.跳台阶1.题目一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。2.思路递归思路,实际上是斐波那契数列,f(n)=f(n-1)+f(n-2)3.代码class Solution {public: int jumpFloor(int number) { if(number <= 0){ ...原创 2019-12-07 20:55:42 · 112 阅读 · 0 评论 -
剑指Offer5:用两个栈实现队列
剑指Offer5.用两个栈实现队列1.题目用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。2.思路使用Stack1和Stack2,进栈时都进stack1,出栈时,将stack1依次放入stack2中,再从stack2中出栈,当stack2中为空时,再将stack1中的元素一次放入stack2中。3.代码class Solution{public:...原创 2019-12-07 20:54:56 · 163 阅读 · 0 评论 -
剑指Offer4:重建二叉树
剑指Offer4.重建二叉树1.题目输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。2.基础知识前序遍历:先访问根结点,再访问左子结点,最后访问右子结点。中序遍历:先访问左子结点,再访问根结点,最后访...原创 2019-12-07 20:54:22 · 117 阅读 · 0 评论 -
剑指Offer3:尾到头打印链表
剑指Offer3.尾到头打印链表1.题目输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。2.思路c++:“后进先出”,借助Stack,先将链表依次存入到栈中,然后再出栈到数组中即可。python:借助数组可以直接在首位插入数据,所以每次都插入数据到首位即可。3.代码class Solution {public: vector<int> print...原创 2019-12-07 20:51:52 · 100 阅读 · 0 评论 -
剑指Offer2:替换空格
1.题目请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。2.思路c++:先统计出修改后字符的长度,然后利用双指针的思想,将原字符转和替换字符加入到新的字符串中Python:有现成的替换函数-replace3.代码c++:class Solution {public: vo...转载 2019-09-06 19:42:00 · 105 阅读 · 0 评论 -
剑指Offer1:二维数组中的查找
1.题目在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。2.思路根据所给矩阵的特性,首先选取数组右上角的数字与trarget进行比较,若小于target,向下移动,反之向左移动,直到相等或没有数字可比为止。3.代码c++:class Solut...转载 2019-09-06 10:01:11 · 91 阅读 · 0 评论