- 博客(32)
- 收藏
- 关注
原创 【剑指offer】包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及 pop的时间复杂度都是O(1)#include <iostream>#include <stack>#include <assert.h>using namespace std;template <typename T&g...
2019-06-04 11:26:47
114
原创 【剑指offer】顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:则依次打出数字 1、2、3、4、12、13、14、5、11、16、15、6、10、9、8、7。自己的解法:void print_cube(const int n){ assert( n > 0 ); int array[n][n]; // 用以保留数据 ...
2018-09-29 18:05:00
162
原创 剑指offer
1、赋值运算符函数2、实现Singleton模式3、二维数组中的查找4、替换空格5、从尾到头打印链表6、重建二叉树7、用两个栈实现队列8、旋转数组的最小数字9、斐波那契数列10、二进制中 1 的个数11、数值的整数次方12、打印 1 到最大的 n 位数13、在O(1)时间删除链表结点14、调整数组顺序使奇数位于偶数前面15、链表中倒数第K个结...
2018-09-17 21:29:33
151
原创 【剑指offer】二叉树的镜像
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。二叉树结点的定义如下:struct binaryTreeNode{ int m_nValue; binaryTreeNode * m_pLeft; binaryTreeNode * m_pRight;};递归解法:void mirrorRecursively (bin...
2018-09-17 21:10:58
120
原创 【剑指offer】树的子结构
题目:输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构。二叉树结点的定义如下:struct binaryTreeNode{ int m_nValue; binaryTreeNode * m_pLeft; binaryTreeNode * m_pRight;};bool doesTree1hasTree2( binary...
2018-08-10 16:42:14
121
原创 【剑指offer】合并两个排序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如输入链表 1 和链表 2,则合并之后的升序链表如链表 3 所示。链表结点定义如下:struct listNode{ int m_nValue; listNode * m_pNext;};链表1: 【1】【3】【5】【7】链表2: 【2】【4】【6】【8】...
2018-08-10 15:13:42
107
原创 【剑指offer】反转单链表
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。链表结点定义如下:struct listNode{ int m_nKey; listNode * m_pNext;};/* Function: reverseList Description: reverse the single list...
2018-08-10 10:06:22
154
原创 【剑指offer】链表中倒数第K个结点
题目:输入一个链表,输出该链表中倒数第k 个结点.为了符合大多数人的习惯,本题从1 开始计数,即链表的尾结点是倒数第1 个结点.例如一个链表有6 个结点,从头结点开始它们的值依次是1 、2、3、4、5 、6。这个个链表的倒数第3 个结点是值为4 的结点.链表结点定义如下:struct listNode{ int m_nValue; listNode * m...
2018-08-09 12:33:55
113
原创 【剑指offer】调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位予数组的后半部分。完成基本功能的解法:void ReorderOddEven( int pData[], const int length ){ if( NULL == pData || length <= 0 ) return; int *p...
2018-08-06 16:22:08
105
原创 【剑指offer】在O(1)时间删除链表结点
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。链表结点与函数的定义如下:struct listNode{ int m_nValue; listNode * m_pNext;};void deleteNode( listNode ** pListHead, listNode * pToBeDeleted );void...
2018-08-06 14:54:33
111
原创 【剑指offer】打印1到最大的n位数
题目:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。字符串模拟加法:bool increment( char * number ){ bool isOverflow = false; int nTakeOver = 0, i; int nLength = strlen( number ); ...
2018-08-06 14:12:09
140
原创 翻转二叉树
输入一个二叉树,输出其镜像(交换所有节点的左右子树)。 1 1 / \ / \2 3 => 3 2 / \ 4 4定义二叉树结点:struct NodeBinaryTree{ int data; Nod...
2018-08-01 11:22:32
669
原创 【剑指offer】数值的整数次方
题目:实现函数 double power( double base, int exponent ),求 base 的 exponent 次方。不得使用库函数,同时不需要考虑大数问题全面但不够高效的解法:bool g_InvalidInput = false; // 全局变量,指示函数入参是否合理const double EPS = 1e-6; // 判断double相等的辅助精度b...
2018-07-26 18:32:06
157
原创 【剑指offer】二进制中 1 的个数
题目:请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如把 9 表示成二进制是 1001,有 2 位是 1 。因此如果输入 9 ,该函数输出 2 。常规解法:int numberOf1( int a ){ int result = 0; int flag = 1; while( 0 != flag ) { if( 0 ...
2018-07-25 17:30:53
124
原创 【剑指offer】斐波那契数列
题目一:写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:long long fibonacci( int n ){ if( n < 0 ) throw(" Invalid n "); long long result[2] = { 0, 1 }; if( n < 2 ) // 前两个数字直...
2018-07-25 16:46:40
132
原创 【剑指offer】旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾, 我们称之数组的旋转。输入一个递增排序的数组的一个旋转, 输出旋转数组的最小元素。例如数组 { 3, 4, 5, 1, 2 } 为 { 1, 2, 3, 4, 5 } 的一个旋转,该数组的最小值为 1int minInOrder( int data[], index1, index2 ){ if( NULL == data || i...
2018-07-25 15:39:17
108
原创 【剑指offer】用两个栈实现队列
题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。template <typename T> class CQueue{public: CQueue( void ); ~CQueue( void ); void appendTail( co...
2018-07-24 18:09:25
100
原创 【剑指offer】重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如:前序遍历序列{ 1, 2, 4, 7, 3, 5, 6, 8}和中序遍历序列{4, 7, 2, 1, 5, 3, 8,6},重建出下图所示的二叉树并输出它的头结点。二叉树结点的定义如下:struct BinaryTreeNode{ int m_nVal...
2018-07-24 16:26:00
120
原创 【剑指offer】从尾到头打印链表
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。方法一:利用栈结构先进后出的特点 void printListRever( listNode * pHead ) { stack<listNode *> nodes; listNode *pNode = pHead; while( NULL != pNode ) { ...
2018-07-24 13:45:12
113
原创 【剑指offer】替换空格
题目:请实现一个函数,把字符串中的每个空格替换成"%20",例如“We are happy.”,则输出“We%20are%20happy.”。/* string 内存应该足够长以存放替换后的字符串,否则会出现内存越界。 */void replaceBlank( char * string ){ if( NULL == string ) // 判断 string 入参是否...
2018-07-24 11:14:24
116
原创 【剑指offer】二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。bool find( int * matrix[], int rows, int columns, int value ){ bool found = false; if( NULL != ma...
2018-07-23 11:20:56
117
原创 【剑指offer】实现Singleton模式
题目:设计一个类,我们只能生成该类的一个实例不好的解法一:只适用于单线程环境class Singleton1{public: static Singleton1 * Intance() { if( NULL == instance ) instance = new Singleton1(); return ins...
2018-07-20 19:07:39
146
原创 【剑指offer】赋值运算符函数
题目:如下为类型 CMyString 的声明,请为该类型添加赋值运算符函数class CMyString{public: CMyString( char * pData = NULL ); CMyString( const CMyString & str ); ~CMyString( void );private: char * m_pData;...
2018-07-20 10:41:42
151
原创 输入一个n,然后在屏幕上打印出NxN 的矩阵!
/* Function: printCube Description: generate the Cube in array and print it Input: [array]: the array for store Cube's data ( enough to store the dat...
2018-07-12 19:18:45
2251
原创 线程池( 尚未整理 )
头文件:#ifndef __AOS_THREADPOOL_H__#define __AOS_THREADPOOL_H__typedef void (*aos_worker_thread_func)( void *arg, U32 ulTaskId );int aos_threadpool_alloc(aos_worker_thread_func f, void * arg);int...
2018-06-12 14:29:29
177
原创 红黑二叉树( 尚未整理 )
头文件:#ifndef __AOS_RBTREE_H__#define __AOS_RBTREE_H__typedef enum aos_rbcolor_t{ AOS_RBCOLOR_BLACK, AOS_RBCOLOR_RED} AOS_RBCOLOR_T;/** * The type of the node of the R/B Tree. */typede...
2018-06-12 14:24:22
229
原创 C语言的角落
C之非常用特性: https://blog.youkuaiyun.com/yang_yulei/article/details/34557625你不一定知道C语言的特性: https://blog.youkuaiyun.com/yang_yulei/article/details/46337583
2018-06-12 11:40:46
177
原创 停顿十秒钟,思考沉淀
如何提升你的能力,给年轻程序员的几条建议: http://tech.glowing.com/cn/advices-to-junior-developers/
2018-06-12 11:17:37
167
原创 shell 脚本编辑 crontab 任务
#!/bin/bashSCHED_FILE="/home/liuyg/study/crontab_sched_file"# check the sched file existif [ ! -f "${SCHED_FILE}" ]; then touch ${SCHED_FILE}fi# stop cronservice cron stop# replace cron...
2018-06-09 18:18:16
2169
原创 Digit Counts
DescriptionCount the number of k's between 0 and n. k can be 0 - 9.Have you met this question in a real interview? YesExampleif n = 12, k = 1 in[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]we have FIVE...
2018-05-31 09:40:18
1031
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人