剑指offer
西风胡杨的
Java,JavaScript,Python
Linux,
Spring
展开
-
【35】数组中的逆序对
【35】数组中的逆序对时间限制:1秒 空间限制:32768K 本题知识点: 数组 题目描述在数组中的两个数字,如果前面一个数字大于后面的数字, 则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。 并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述:题目保证输入的数组中没有的相同的数字 数据范围: 对于%50的数据,s原创 2016-08-01 08:45:44 · 281 阅读 · 0 评论 -
【55】链表中环的入口结点
【55】链表中环的入口结点时间限制:1秒空间限制:32768K本题知识点: 链表题目描述 一个链表中包含环,请找出该链表的环的入口结点。 牛客网题目链接:点击这里代码:// Source: http://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4?tpId=13&tqId=11208&rp=3&ru=/ta/cod原创 2016-08-12 11:26:47 · 402 阅读 · 0 评论 -
【53】字符流中第一个不重复的字符
【53】字符流中第一个不重复的字符参与人数:2256时间限制:1秒空间限制:32768K本题知识点: 字符串题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。 例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。 当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。 输出描述: 如果当前字符流没有存在出现一次的字符原创 2016-08-12 10:14:47 · 284 阅读 · 0 评论 -
【48】不用加减乘除做加法
【48】不用加减乘除做加法时间限制:1秒空间限制:32768K题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 牛客网题目链接:点击这里VS2010代码:// Source : http://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215?tpId=13&tqId=11201&rp原创 2016-08-09 22:39:18 · 388 阅读 · 0 评论 -
【8】跳台阶
【8】跳台阶时间限制:1秒空间限制:32768K题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路: ·········· | 1, (n=1) f(n) = | 2, (n=2) ·········· | f(n-1)+f(n-2) ,(n>2,n为整数) 即有一个递归的斐波那契数列。方法一:从后往前很显然,如斐波那契数列原创 2016-09-02 15:14:03 · 305 阅读 · 0 评论 -
【53】表示数值的字符串
【53】表示数值的字符串参与人数:1903 - 时间限制:1秒 - 空间限制:32768K - 本题知识点: 字符串题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。 牛客网题目链接:原创 2016-08-11 18:05:43 · 427 阅读 · 0 评论 -
【52】正则表达式匹配
【52】正则表达式匹配参与人数:1906时间限制:1秒空间限制:32768K本题知识点: 字符串题目描述 请实现一个函数用来匹配包括’.’和’*’的正则表达式。模式中的字符’.’表示任意一个字符, 而’*’表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。 例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a原创 2016-08-11 14:33:44 · 190 阅读 · 0 评论 -
【7】斐波那契数列
斐波那契数列列表内容时间限制:1秒空间限制:32768K 牛客网题目链接:点击题目链接题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。vs2010代码#include<stdio.h>#include<time.h>#include<Windows.h>//class Solution {//public:// int Fibonacc原创 2016-06-22 17:03:11 · 502 阅读 · 0 评论 -
【51】构建乘积数组
【51】构建乘积数组时间限制:1秒空间限制:32768K本题知识点: 数组题目描述 给定一个数组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]。 不能使用除法。 牛客网题目链接:点击这里VS2010代码:#include<vector>#include<ios原创 2016-08-10 15:48:11 · 241 阅读 · 0 评论 -
【50】数组中重复的数字
【50】数组中重复的数字时间限制:1秒空间限制:32768K本题知识点: 数组题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。 也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。 牛客网题目链接:点击这里V原创 2016-08-10 12:03:30 · 237 阅读 · 0 评论 -
【49】把字符串转换成整数
【49】把字符串转换成整数时间限制:1秒空间限制:32768K本题知识点: 字符串题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 “123”->123; “空” ; “字母”; “字母+数字”; “数字+字母”; “+123”->123; “-123”->-123牛客网题目链接:点击这里VS2010代码:// Source: http://www.nowcod原创 2016-08-10 09:55:34 · 227 阅读 · 0 评论 -
【47】求1+2+3+...+n
【47】求1+2+3+…+n时间限制:1秒空间限制:32768K题目描述 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、 case等关键字及条件判断语句(A?B:C)。 牛客网题目练级点击这里发散思维**************************************************************/#includ原创 2016-08-09 12:30:33 · 573 阅读 · 0 评论 -
【47】3求1+2+3+...+n
【47】3求1+2+3+…+n时间限制:1秒空间限制:32768K题目描述 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、 case等关键字及条件判断语句(A?B:C)。 牛客网题目练级点击这里VS2010代码:/方法三:静态函数指针#include<iostream>using namespace std; typedef int (原创 2016-08-09 21:35:01 · 263 阅读 · 0 评论 -
【47】2求1+2+3+...+n
【46】2孩子们的游戏(圆圈中最后剩下的数)时间限制:1秒空间限制:32768K本题知识点: 模拟题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友, 今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。 然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在原创 2016-08-09 16:44:34 · 192 阅读 · 0 评论 -
【46】孩子们的游戏(圆圈中最后剩下的数)
【46】孩子们的游戏(圆圈中最后剩下的数)时间限制:1秒空间限制:32768K本题知识点: 模拟题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友, 今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。 然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼原创 2016-08-09 08:58:14 · 435 阅读 · 0 评论 -
【56】删除链表中重复的结点
【56】删除链表中重复的结点时间限制:1秒空间限制:32768K本题知识点: 链表题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点, 重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 牛客网题目链接:点击这里VS2010代码:// Source: http://www.nowcoder.com/pr原创 2016-08-12 16:30:23 · 429 阅读 · 0 评论 -
【57】二叉树的下一个结点
【57】二叉树的下一个结点参与人数:2521时间限制:1秒空间限制:32768K题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。 注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 牛客网题目链接:点击这里VS2010代码:// Source: http://www.nowcoder.com/practice/9023a0c988684a5原创 2016-08-12 21:38:25 · 200 阅读 · 0 评论 -
【58】对称的二叉树
【58】对称的二叉树时间限制:1秒空间限制:32768K题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。 注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 牛客网题目链接:点击这里VS2010代码:// Source: http://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb?tpId=13原创 2016-08-13 09:11:00 · 215 阅读 · 0 评论 -
【66】机器人的运动范围
【66】机器人的运动范围时间限制:1秒空间限制:32768K回溯法题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动, 每一次只能向左,右,上,下四个方向移动一格, 但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。 但是,它不能进入方格(35,38),因为3+5+3+8原创 2016-08-15 09:22:58 · 1378 阅读 · 0 评论 -
【64】滑动窗口的最大值
【64】滑动窗口的最大值参与人数:2130 时间限制:1秒空间限制:32768K题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。 例如,如果输入数组{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原创 2016-08-14 15:51:03 · 327 阅读 · 0 评论 -
【63】数据流中的中位数
【63】数据流中的中位数参与人数:1690时间限制:1秒空间限制:32768K题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值, 那么中位数就是所有数值排序之后位于中间的数值。 如果从数据流中读出偶数个数值, 那么中位数就是所有数值排序之后中间两个数的平均值。 牛客网题目链接:点击这里VS2010代码:// Source: http://www.nowcoder原创 2016-08-14 14:30:47 · 341 阅读 · 0 评论 -
【62】二叉搜索树的第k个结点
【62】二叉搜索树的第k个结点参与人数:2376时间限制:1秒空间限制:32768K题目描述 给定一颗二叉搜索树,请找出其中的第k大的结点。 例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。 牛客网题目链接:点击这里VS2010代码:// Source: http://www.nowcoder.com/practice/ef068f60原创 2016-08-14 10:04:52 · 277 阅读 · 0 评论 -
【61】序列化二叉树
【61】序列化二叉树参与人数:1703时间限制:1秒空间限制:32768K题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 牛客网题目链接:点击这里VS2010代码:// Source: http://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84?tpId=13&tqId=11214&rp=4&ru=/ta/原创 2016-08-14 09:56:43 · 225 阅读 · 0 评论 -
【60】把二叉树打印成多行
【60】把二叉树打印成多行参与人数:2502时间限制:1秒空间限制:32768K题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 牛客网题目链接:点击这里VS2010代码:// Source: http://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?tpId=13&tqId=11213&原创 2016-08-13 16:24:54 · 457 阅读 · 0 评论 -
【15】反转链表
反转链表时间限制:1秒空间限制:32768K本题知识点: 链表题目描述输入一个链表,反转链表后,输出链表的所有元素。牛客网题目链接:点击这里vs2010代码#include<iostream>#include<vector>using namespace std;struct ListNode { int val; struct ListNode *next;原创 2016-06-24 11:28:17 · 226 阅读 · 0 评论 -
【14】链表中倒数第k个结点
链表中倒数第k个结点时间限制:1秒空间限制:32768K本题知识点: 链表题目描述输入一个链表,输出该链表中倒数第k个结点 牛客网题目链接:点击这里题目vs2010全部代码#include<iostream>using namespace std;struct ListNode { int val; struct ListNode *next; ListNode(原创 2016-06-24 10:31:48 · 308 阅读 · 0 评论 -
【13】调整数组顺序使奇数位于偶数前面
调整数组顺序使奇数位于偶数前面时间限制:1秒空间限制:32768K本题知识点: 数组题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序, 使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分, 并保证奇数和奇数,偶数和偶数之间的相对位置不变。牛客网题目链接:点击这里VS2010代码:#include<iostream>#include<vector>usin原创 2016-06-23 22:41:02 · 554 阅读 · 0 评论 -
【59】按之字形顺序打印二叉树
【59】按之字形顺序打印二叉树时间限制:1秒空间限制:32768K题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 牛客网题目链接:点击这里VS2010代码:// Source: http://www.nowcoder.com/practice/91b69814117f4e809739原创 2016-08-13 11:12:44 · 208 阅读 · 0 评论 -
【12】数值的整数次方
数值的整数次方时间限制:1秒空间限制:32768K题目描述给定一个double类型的浮点数base和int类型的整数exponent。 求base的exponent次方。牛客网题目链接:题目链接代码:#include<iostream>using namespace std;class Solution {public: double Power(double base, in原创 2016-06-23 17:12:35 · 223 阅读 · 0 评论 -
【11】二进制中1的个数
二进制中1的个数时间限制:1秒空间限制:32768K题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 牛客网题目链接:点击这里思路:从4位演示 有符号 无符号 机器码 有符号 无符号 0000 0 0 1000 8 -8 0001 1 1 1001 9 -7 0010 2 2原创 2016-06-23 16:23:10 · 695 阅读 · 0 评论 -
【10】矩形覆盖
矩形覆盖时间限制:1秒空间限制:32768K题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。 请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?题目链接:牛客网题目链接点击提交代码#include<stdio.h>class Solution {public: int rectCover(int number) {原创 2016-06-23 11:30:11 · 218 阅读 · 0 评论 -
【9】变态跳台阶
【9】变态跳台阶时间限制:1秒空间限制:32768K 牛客网题目链接:点击进入题目链接题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。 求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:跳n阶 等于 跳1阶的方法 和 跳两阶的方法 和……。将问题递归缩小。和普通跳台阶问题相似。f(n)=f(n-1)+f(n-2)+……+f(1)+1; 描述为:最后一次跳1阶+最原创 2016-06-22 20:19:04 · 252 阅读 · 0 评论 -
【6】旋转数组 的最小数字
旋转数组 的最小数字时间限制:1秒空间限制:32768K本题知识点: 查找题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。牛客网提交代码1class S原创 2016-06-22 15:31:24 · 197 阅读 · 0 评论 -
【5】用两个栈实现队列
用两个栈实现队列时间限制:1秒 空间限制:32768K 本题知识点: 栈 队列题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。题目链接:牛客网题目vs2010编译通过#include<iostream>#include<stack>using namespace std;class Solution{public:void push(int原创 2016-06-22 11:07:03 · 202 阅读 · 0 评论 -
【4】重建二叉树
重建二叉树重建二叉树vs2010调试代码块方法一方法三牛客网提交测试通过图片时间限制:1秒 空间限制:32768K 题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 时间限制:1秒空间限制:3原创 2016-06-21 22:02:41 · 245 阅读 · 0 评论 -
[32]把数组排成最小的数
[32.]把数组排成最小的数时间限制:1秒 空间限制:32768K 本题知识点: 数组 题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 牛客网题目链接:点击这里VS2010代码:#include<iostream>#include<vector>usin原创 2016-07-29 13:19:34 · 245 阅读 · 0 评论 -
字符串的排列
字符串的排列时间限制:1秒空间限制:32768K本题知识点: 字符串题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。 例如输入字符串abc, 则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。牛客网题目链接:点原创 2016-07-16 15:33:59 · 289 阅读 · 0 评论 -
从上往下打印二叉树
从上往下打印二叉树时间限制:1秒空间限制:32768K题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。牛客网题目链接:点击这里VS2010代码: 未测试,一次通过#include<iostream>#include<vector>#include<queue>using namespace std;struct TreeNode { int val; st原创 2016-07-04 22:13:20 · 219 阅读 · 0 评论 -
栈的压入、弹出序列
栈的压入、弹出序列时间限制:1秒 空间限制:32768K 本题知识点: 栈题目描述输入两个整数序列,第一个序列表示栈的压入顺序, 请判断第二个序列是否为该栈的弹出顺序。 假设压入栈的所有数字均不相等。 例如序列1,2,3,4,5是某栈的压入顺序, 序列4,5,3,2,1是该压栈序列对应的一个弹出序列, 但4,3,5,1,2就不可能是该压栈序列的弹出序列。牛客网题目链接:点击这里VS20原创 2016-07-04 21:25:38 · 249 阅读 · 0 评论 -
包含min函数的栈
包含min函数的栈时间限制:1秒空间限制:32768K本题知识点: 栈题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。牛客网题目链接:点击这里VS2010调试代码:说明:不明白题目,看了答案#include<stack>using namespace std;#define MIN(a,b) ((a)<(b)? (a):(b))class Solution原创 2016-07-04 16:08:29 · 246 阅读 · 0 评论