自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

皓月的博客

菜鸟的学习笔记

  • 博客(12)
  • 资源 (7)
  • 收藏
  • 关注

原创 青蛙跳台阶问题

使用01 问题的类似解法解了一下, 可以求出跳台阶的方法, 以及总共的次数., 不过网上搜了一下, 发现原来是用数学归纳法, 推出递归公式, 然后递归求解,以下是01问题的思路的解决方法:#include #include void helper(int data[], int left, int right, int sum);int main

2016-07-19 20:42:25 403

原创 左旋转字符串

例如把字符串"abcdef"左旋转2位 变成 "cdefab", 要求时间复杂度 为O(n), 空间复杂度为O(1)如果没有时间复杂度和空间复杂度要求那就非常简单, 有许多办法, 但是要满足题目要求, 方法就相对更少.一.  翻转字符串 3次, 就可以. 比如 首先 翻转 前面 2位, 变成 "bacdef", 再翻转后面4位变成"bafedc", 最后整体翻转, 变成"cdefa

2016-07-19 16:59:19 286

原创 输入两个整数n 和 m, 从数列1, 2, 3, ..., n中随意取几个数, 使其和等于m, 要求将所有组合列出来

本题的关键在随意取几个数, 因此和以前解过的true or false问题思路一样.网上一搜才发现这是一类问题, 称01背包问题我们可以使用递归来列举出所有的排列组合情况,共有2的n次方中情况,  然后筛选其中和为m的排列, 将其打印出来即可.这n个数中, 每一个数都有选取和不选取两种情况, 比如第一个数如果选取, 那么剩余的9 个元素其和应该为m -1, 如果第一个数不选取,

2016-07-12 15:43:12 1302

原创 输入一个表示整数的字符串, 把该字符串转换成整数并输出

//把字符串转换成整数//需要考虑正负, 非法数字, 溢出等情况#include #include #include #include #define N 30int my_atoi(const char * str);int main(void){int result;char data[N];char * p = data;

2016-07-11 15:29:36 4376

原创 在一个字符串中找到第一个只出现一次的字符

首先想到的方法是从第一个字符开始遍历字符, 每个字符在遍历后序字符判断是否有重复的, 没有就说明找到结果, 为了提高效率, 我设置了一个数组用来标记重复的数组.但是还是不如其它博客上看到的效率高.#define N 100char findch(char * str){int i, j;int length = strlen(str);int mark[N] =

2016-07-08 15:24:58 644

转载 C语言从stdin读取一行字符串的几种方法

C语言从stdin读取一行字符串的几种方法getsgets函数的头文件是,原型如下:char *gets(char *s);gets从stdin中读入一行内容到s指定的buffer中,当遇到换行符或EOF时读取结束。读取成功时,返回s地址;失败时返回null。需要注意的是,gets会将行末尾的'\n'字符或EOF替换成'\0',这样,gets读取的内

2016-07-07 17:22:28 8496

原创 输入一个整数和一棵二元树,打印出所有和为该整数的二元树中的路径

从根节点到叶子节点经过的所有节点为一个路径.//path 用于保存路径void findPath(BinaryTreeNode * root, int target, int n, int path[]){ if(!root)return ;target -= root->m_nValues;path[n++] = root->m_nValues;if(ta

2016-07-07 16:29:45 1312 2

原创 判断一个数组是不是二元查找树后序遍历的结果

最主要是要知道后序遍历的特点1. 数组最后一个元素为根节点.2. 左子树所有节点在右子树的左边, 需要找出该分界点.//递归实现int isBTreee(int data[], int n){int root;int i;int lLen = 0;int right = 0;int bRet1 = 1, bRet2  = 1;if(n ==

2016-07-07 16:21:26 646

原创 输出单向链表倒数第k个节点,倒数第0个指向尾节点.

首先想到的是链表逆序, 然后输出第K个节点.还可以先计算链表中节点个数n, 倒数第0个, 就是顺数第n - 0 -1个.typedef struct ListNode{int m_nKey;struct ListNode * m_pNext;}ListNode;ListNode * retKNode(ListNode * list, in

2016-07-07 16:10:02 365

原创 输入一个已经按升序排序过的数组和一个数字

在数组中查找两个数, 使得他们的和正好等于输入的那个数字, 要求时间复杂度为O(n), 如果存在多对这样的数字只需要输出一对就可以.void findarray(int data[], int n, int sum){int left = 0;int right = n -1;while(left {if(data[left] + data[right] =

2016-07-07 16:01:40 3076

原创 输入一棵二元查找树, 将该树转换为它的镜像

要求使用递归和循环两种方法.二叉树节点定义:typedef struct BSTreeNode{int m_nValue;struct BSTreeNode * m_pLeft;struct BSTreeNode * m_pRight;}BSTreeNode;一.递归void reverseBTree(BSTreeNode * bst

2016-07-07 15:47:45 778

原创 用数组创建二叉树的一种方法

很多面试题都是二叉树相关的, 因此经常需要测试自己的写的程序, 那么创建二叉树就必不可少, 用数组中的值初始化二叉树是一种比较简单的方法.typedef struct BSTreeNode{int m_nValue;struct BSTreeNode * m_pLeft;struct BSTreeNode * m_pRight;}BSTreeNode;

2016-07-06 17:33:02 10751 1

汇编语言第三版

学习汇编语言入门首选,在X86平台下讲述16位汇编语言,如果有些基础1个月内估计就能学习完并较好掌握,当然这个只是入门,学习完这个还要继续学习其他平台或者32/64位的汇编。

2018-05-08

跟我一起写Makefile

讲解makefile比较好的中文版资料,内容相对比较全面。

2018-05-08

linux 设备驱动开发及参考代码

中文版,学习驱动开发必备,需要有具备一定的内核知识。

2018-05-01

Wireshark 数据包分析实战详解

Wireshark 数据包实战分析,Wireshark 数据包实战分析

2018-04-30

TCP-IP详解卷一:协议

虽然有点枯燥,但是是学习网络知识的基础,主要学习TCP,UDP,IP协议,其它协议可以先了解一下,需要用到的时候再有针对性的研究效果可能更好。

2018-04-30

算法导论中文版_原书第3版(带目录).pdf

学习数据结构的神器,数有点难,适合有一定基础的人读。

2018-04-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除