
剑指offer
颖豆豆啦
这个作者很懒,什么都没留下…
展开
-
剑指offer--从尾到头打印链表
面试题5:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。 链表结点定义如下: struct ListNode { int m_nKey; ListNode * m_pNext; };//不带头结点的单链表struct ListNode{ int m_nKey; ListNode *m_pNext;}原创 2017-10-08 15:29:07 · 128 阅读 · 0 评论 -
剑指offer--包含min函数的栈
面试题21:包含min函数的栈 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1).思路:每次把最小的值都保存在辅助栈里。//包含min函数的栈template <typename Type>class StackWithMin{public: void pop(); void pus原创 2017-10-15 12:09:55 · 147 阅读 · 0 评论 -
剑指offer--顺时针打印矩阵
面试题20:顺时针打印矩阵 题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如:如果输入以下矩阵: 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.#define ROW 4#define COL 4//一次打印一圈vo原创 2017-10-14 21:22:30 · 173 阅读 · 0 评论 -
剑指offer--树的子结构
面试题18:树的子结构 题目:输入两棵二叉树A和B,判断B是不是A的子结构。二叉树结点的定义如下: struct BinaryTreeNode { int m_nValue; BinaryTreeNode *m_pleft; BinaryTreeNode *m_pright; };BinaryTreeNode* BuyNode()//申请一个节点{ B原创 2017-10-14 14:19:28 · 182 阅读 · 0 评论 -
剑指offer--二进制中1的个数
面试题10:二进制中1的个数 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2.1、最简单的做法//得到二进制1的个数int NumberOf1(int n){ int count = 0; while(n) { if(n%2 != 0) c原创 2017-10-14 11:06:16 · 207 阅读 · 0 评论 -
剑指offer--合并两个排序的链表
面试题17:合并两个排序的链表 题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然使按照递增排序的。例如: 链表1: 1->3->5->7 链表2:2->4->6->8 链表3:1->2->3->4->5->6->7->8struct ListNode{ int m_nKey; ListNode *m_pNext;};void Show(ListNode原创 2017-10-13 23:12:56 · 157 阅读 · 0 评论 -
剑指offer--链表逆置
面试题16:反转链表 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。结点定义如下: struct ListNode { int m_nKey; ListNode *m_pNext; };void Show(ListNode *head){ for(ListNode *p=head;p!=NULL;p=p->m_pNext)原创 2017-10-13 20:35:26 · 268 阅读 · 0 评论 -
剑指offer--链表中倒数第k个结点
面试题15:链表中倒数第k个结点 题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。struct ListNode{ int m_nKey; ListNode *m_pNext;};ListNo原创 2017-10-13 19:25:10 · 137 阅读 · 0 评论 -
剑指offer--调整数组顺序使奇数位于偶数前面
面试题14:调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。void ReorferOddEven(int *arr,int n){ if(arr==NULL || n<=0) return; int i = 0; int j = n-1; wh原创 2017-10-13 17:05:00 · 195 阅读 · 0 评论 -
在excel2003中,用A表示第一列,B表示第二列....Z表示第26列,AA表示27列,AB表示28列。
在excel2003中,用A表示第一列,B表示第二列….Z表示第26列,AA表示27列,AB表示28列。1、输入用字母表示的列号编号,输出它是第几列 —->把26进制转成10进制 //把26进制转成10进制int index(char *str,char x){ int i = 0; for(;i<strlen(str);i++) { if(str[i]原创 2017-10-13 16:33:14 · 10548 阅读 · 2 评论 -
剑指offer--用O(1)的时间复杂度删除链表的节点
给定单项链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。//不带头结点的单链表struct ListNode{ int m_nKey; ListNode *m_pNext;};//尾插void InsertTail(ListNode **head,int key){ ListNode *newnode = new ListNode(); n原创 2017-10-13 15:36:37 · 276 阅读 · 0 评论 -
剑指offer--实现power函数
面试题11:数值的整数次方 题目:实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。理解:考虑指数是整数,负数两种情况 当指数为负数时,先对指数求绝对值,再算出次方的结果取倒数。 求倒数的时候,不能对0取倒数,所以底数不能为0//判断是否和0相等bool equal(double n原创 2017-10-29 22:08:19 · 423 阅读 · 0 评论 -
用两个栈实现队列
剑指offer面试题7 题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。template <typename Type>class CQueue{public: void appendTail(const Type& node); Type deleteHead()原创 2017-10-08 19:26:49 · 157 阅读 · 0 评论 -
剑指offer--替换空格
把字符串中的每个空格替换成“%20”. eg:we are happy—->we%20are%20happy#include <iostream>using namespace std;#define MAX 50void ReplaceBlank(char arr[],int len){ assert(arr != NULL); int blanknum = 0;//空格个数原创 2017-10-08 15:15:24 · 152 阅读 · 0 评论 -
剑指offer--栈的压入、弹出序列
面试题22:栈的压入、弹出序列 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5、3、2、1是该栈序列对应的一个弹出序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列。思路:按照题目中的例子,序列1为1、2、3、4、5,序列2为4、5、3、2、1。定义一个辅助栈,按照原创 2017-10-15 13:00:00 · 166 阅读 · 0 评论