
剑指offer
从零开始学习的ZHL
已工作但很弱鸡的学习者
展开
-
二维数组的查找
class Solution {public: bool Find(int target, vector > array) { int rowCount =array.size(); int colCount =array[0].size(); int i, j; for(i=rowCount-1,j=0;i>=0 && j原创 2017-12-16 12:40:28 · 165 阅读 · 0 评论 -
链表中倒数第k个结点
题目:输入一个链表,输出该链表中倒数第k个结点/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindKthToTail(ListNode* pListH原创 2017-12-18 16:50:10 · 113 阅读 · 0 评论 -
反转链表
题目:输入一个链表,反转链表后,输出链表的所有元素。注意好顺序问题,反转后的链表的最后一个结点的next应该是NULL,这里容易出错/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {publi原创 2017-12-18 16:52:28 · 127 阅读 · 0 评论 -
合并两个排序的链表
题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。方法1:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution原创 2017-12-18 16:54:59 · 126 阅读 · 0 评论 -
树的子结构
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: bool isSubTree(TreeNode* pR原创 2017-12-18 16:59:17 · 122 阅读 · 0 评论 -
二叉树的镜像
题目:操作给定的二叉树,将其变换为源二叉树的镜像二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5/*struct T原创 2017-12-18 17:03:07 · 130 阅读 · 0 评论 -
顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.class Solution {public: vector printMatrix(vector > matrix)原创 2017-12-18 17:04:28 · 209 阅读 · 0 评论 -
包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。class Solution {public: stack dataStack,minStack;//用一个栈存储数据,一个栈存储Min值 void push(int value) { dataStack.push(value); if(!minStack.empty(原创 2018-05-16 22:34:28 · 106 阅读 · 0 评论 -
用队列实现栈
class MyStack {public: /** Initialize your data structure here. */ MyStack() { } /** Push element x onto stack. */ void push(int x) { queue<int> tmp_qu...原创 2018-06-12 21:30:04 · 215 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。class Solution {public: void reOrderArray(vector &array) { vector odd; vector even; int cou原创 2017-12-16 13:09:49 · 123 阅读 · 0 评论 -
数值的整数次方
题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。class Solution {public: double Power(double base, int exponent) { double result=1; int n=exponent; if(exponent=原创 2017-12-16 12:59:17 · 147 阅读 · 0 评论 -
替换空格
class Solution {public: void replaceSpace(char *str,int length) { if(str==NULL||length<0) return; int i=0,count=0,countSpace=0; while(str[i]!='\0') {原创 2017-12-16 12:45:55 · 143 阅读 · 0 评论 -
从尾到头打印链表
题目:输入一个链表,从尾到头打印链表每个节点的值。/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/class Solution原创 2017-12-16 12:48:29 · 119 阅读 · 0 评论 -
重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。笔记:先序遍历第一个位置肯定是根节点node,中序遍历的根节点位置在中间p,在p左边的肯定是node的左子树的中序数组,p右边的肯定是no原创 2017-12-16 12:50:40 · 148 阅读 · 0 评论 -
用两个栈实现队列
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。class Solution{public: void push(int node) { stack1.push(node); } int pop() { int temp = 0; if(stack2.empty())原创 2017-12-16 12:52:09 · 147 阅读 · 0 评论 -
斐波那契数列
题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。nclass Solution {public: int Fibonacci(int n) { return (1/sqrt(5)*( pow((1+sqrt(5))/2,n) - pow((1-sqrt(5))/2,n))); }};之后再用另外的方法来改原创 2017-12-16 12:54:06 · 228 阅读 · 0 评论 -
跳台阶
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法class Solution {public: int jumpFloor(int number) { if(number<=0) return 0; int f1=0,f2=1; while(number-->0){原创 2017-12-16 12:55:29 · 135 阅读 · 0 评论 -
变态跳台阶
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。class Solution {public: int jumpFloorII(int number) { if(number<=0) return 0; else if(number==1) retu原创 2017-12-16 12:56:44 · 151 阅读 · 0 评论 -
矩形覆盖
题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?class Solution {public: int rectCover(int number) { if(number<=0) return 0; else if(number==1)原创 2017-12-16 12:58:10 · 142 阅读 · 0 评论 -
用栈实现队列
利用一个临时栈,调换顺序class MyQueue {public: /** Initialize your data structure here. */ MyQueue() { } /** Push element x to the back of queue. */ void push(int x) { s...原创 2018-06-12 21:47:59 · 181 阅读 · 0 评论