• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
煎蛋啊
博客园    首页    新随笔    联系   管理    订阅  订阅
03 2017 档案
链表中的倒数第k个结点

摘要:题目描述 输入一个链表,输出该链表中倒数第k个结点。 基本思想:定义两个指针a,b分别指向头节点, a指针先向前走k-1步(注意:因为倒数节点是从倒数第一个结点开始的,而不是零),然后a指针和b指针一起向前移动, 直到a->next == NULL。此时,b指针所指向的结点。即为倒数第K个结点。 边 阅读全文
posted @ 2017-03-31 21:11 煎蛋啊 阅读(233) 评论(0) 推荐(0)
数值的整数次方

摘要:题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 基本思想:首先考虑一下所有可能的情况,以及边界条件。 1. 指数为正数,正常算出次方的结果。 2. 指数为负数的一般情况:先对指数求绝对值,然后算出次方的结果,再取倒数。 3. 阅读全文
posted @ 2017-03-31 19:41 煎蛋啊 阅读(256) 评论(0) 推荐(0)
二进制中1的个数

摘要:题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 对于这道题我们很容易想到的是先判断二进制数最右边的第一位是不是1,。接着把输入的整数右移一位,这样每次移动一位,直到整个整数变为0。 但是需要注意的是,如果输入一个负数,例如:0x80000000。把负数0x80000000 阅读全文
posted @ 2017-03-31 16:52 煎蛋啊 阅读(252) 评论(0) 推荐(0)
TCP 三次握手

摘要:TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机; 第二次握手:主机B收到请求后要确认联机信息,向A发送ack numb 阅读全文
posted @ 2017-03-31 15:59 煎蛋啊 阅读(291) 评论(0) 推荐(1)
旋转数组的最小数字

摘要:题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 基本思想: 阅读全文
posted @ 2017-03-30 21:57 煎蛋啊 阅读(279) 评论(0) 推荐(1)
用两个栈实现队列

摘要:题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 基本思想:1. 插入一个元素a,将它插入stack1中; 2. 当弹出一个元素时:(1) 若stack2为空,而stack1不为空,则将stack1中的元素全部弹出到stack2中,然后将stack2栈顶 阅读全文
posted @ 2017-03-30 20:39 煎蛋啊 阅读(229) 评论(0) 推荐(1)
重建二叉树

摘要:题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 基本思想:在中序序列中找到根节点的位置,根结点左边是 阅读全文
posted @ 2017-03-30 20:29 煎蛋啊 阅读(175) 评论(0) 推荐(1)
二维数组中的查找

摘要:题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 基本思想:首先选取数组右上角的数字。如果该数字等于要查找的数字,查找过程结束; 如果该数字大于要查找的数字,剔除这个数字 阅读全文
posted @ 2017-03-30 10:19 煎蛋啊 阅读(226) 评论(0) 推荐(1)
const作用

摘要:const有以下几个作用: 1. 定义const常量,具有不可变性。eg. const int MAX = 100; int Array[MAX]; 2. 进行类型检查,使编译器对处理内容有更多的了解,消除隐患。eg. void f(const int i){....}编译器就会知道i是一个常量,不 阅读全文
posted @ 2017-03-29 16:33 煎蛋啊 阅读(1157) 评论(0) 推荐(1)
static变量的作用

摘要:在C语言中,关键字static的意思是静态的,有3个明显的作用: 1. 在函数体内,静态变量具有记忆作用,即一个被声明为静态的变量在这一函数被调用的过程中其值维持不变。 2. 在模块内(但在函数体外),它的作用域范围是有限制的,如果一个变量被声明为静态的,那么该变量可以被模块内所有的函数访问,但不能 阅读全文
posted @ 2017-03-29 10:48 煎蛋啊 阅读(19290) 评论(0) 推荐(3)
如何实现单链表交换任意两个元素(不包括头结点)

摘要:对于单链表而言,假设交换A、B两个节点,那么需要交换A与B的next指针以及A、B直接前驱的next指针。 需要注意特殊情况:1、当A与B相邻时:A->next = B;或者B->next = A; 2、当A和B元素相同时,则没有必要交换。 3、A与B有一个节点是头结点,不需要交换。 阅读全文
posted @ 2017-03-28 16:37 煎蛋啊 阅读(5665) 评论(1) 推荐(0)
网易--小易记单词

摘要:小易参与了一个记单词的小游戏。游戏开始系统提供了m个不同的单词,小易记忆一段时间之后需要在纸上写出他记住的单词。小易一共写出了n个他能记住的单词,如果小易写出的单词是在系统提供的,将获得这个单词长度的平方的分数。注意小易写出的单词可能重复,但是对于每个正确的单词只能计分一次。 阅读全文
posted @ 2017-03-27 17:20 煎蛋啊 阅读(658) 评论(0) 推荐(0)
C++中set的用法

摘要:set的特性是,所有元素都会根据元素的键值自动排序,set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set不允许两个元素有相同的键值。 set的各成员函数列表如下: 1. begin()--返回指向第一个元素的迭代器 2. clear 阅读全文
posted @ 2017-03-27 17:10 煎蛋啊 阅读(142121) 评论(1) 推荐(8)
网易--消除重复元素

摘要:小易有一个长度为n序列,小易想移除掉里面的重复元素,但是小易想是对于每种元素保留最后出现的那个。小易遇到了困难,希望你来帮助他。 阅读全文
posted @ 2017-03-27 16:47 煎蛋啊 阅读(667) 评论(0) 推荐(1)
网易--调整队形

摘要:在幼儿园有n个小朋友排列为一个队伍,从左到右一个挨着一个编号为(0~n-1)。其中有一些是男生,有一些是女生,男生用'B'表示,女生用'G'表示。小朋友们都很顽皮,当一个男生挨着的是女生的时候就会发生矛盾。作为幼儿园的老师,你需要让男生挨着女生或者女生挨着男生的情况最少。你只能在原队形上进行调整,每 阅读全文
posted @ 2017-03-27 16:45 煎蛋啊 阅读(1051) 评论(0) 推荐(1)
网易--赶去公司

摘要:终于到周末啦!小易走在市区的街道上准备找朋友聚会,突然服务器发来警报,小易需要立即回公司修复这个紧急bug。假设市区是一个无限大的区域,每条街道假设坐标是(X,Y),小易当前在(0,0)街道,办公室在(gx,gy)街道上。小易周围有多个出租车打车点,小易赶去办公室有两种选择,一种就是走路去公司,另外 阅读全文
posted @ 2017-03-27 16:43 煎蛋啊 阅读(566) 评论(0) 推荐(1)
C++中map的用法

摘要:map的特性是,所有元素都会根据元素的减值自动被排序。map的所有元素都是pair,同时拥有实值(value)和键值(key)。pair的第一个元素会被视为键值,第二个元素会被视为实值。map不允许两个元素拥有相同的键值。 下面看一下<stl_pair.h>中的pair定义: template <c 阅读全文
posted @ 2017-03-25 15:52 煎蛋啊 阅读(89405) 评论(1) 推荐(3)
字符串分类问题(牛客第二场笔试)

摘要:牛牛有N个字符串,他想将这些字符串分类,他认为两个字符串A和B属于同一类需要满足以下条件:A中交换任意位置的两个字符,最终可以得到B,交换的次数不限。比如:abc与bca就是同一类字符串。现在牛牛想知道这N个字符串可以分成几类。 阅读全文
posted @ 2017-03-25 14:39 煎蛋啊 阅读(1700) 评论(0) 推荐(0)
平衡数问题

摘要:牛牛在研究他自己独创的平衡数,平衡数的定义是:将一个数分成左右两部分,分别成为两个新的数。左右部分必须满足以下两点:1,左边和右边至少存在一位。2,左边的数每一位相乘如果等于右边的数每一位相乘,则这个数称为平衡数。例如:1221这个数,分成12和21的话,1*2=2*1,则称1221为平衡数,再例如 阅读全文
posted @ 2017-03-25 14:37 煎蛋啊 阅读(8760) 评论(0) 推荐(0)
重复值判断练习题

摘要:请设计一个高效算法,判断数组中是否有重复值。必须保证额外空间复杂度为O(1)。 给定一个int数组A及它的大小n,请返回它是否有重复值。 测试样例:[1,2,3,4,5,5,6],7 返回:true 因为这道题对空间复杂度有要求,所以想用非递归堆排序。 #include <iostream> #in 阅读全文
posted @ 2017-03-23 14:40 煎蛋啊 阅读(389) 评论(0) 推荐(0)
小范围排序

摘要:已知一个几乎有序的数组,几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离可以不超过k,并且k相对于数组来说比较小。请选择一个合适的排序算法针对这个数据进行排序。给定一个int数组A,同时给定A的大小n和题意中的k,请返回排序后的数组。测试样例:[2,1,4,3,6,5,8,7,10,9],1 阅读全文
posted @ 2017-03-23 11:35 煎蛋啊 阅读(343) 评论(0) 推荐(0)
堆排序

摘要:堆排序基本思想(最大堆): 1. 将初始待排序关键字序列(R1,R2....Rn)构建成最大堆,此时堆为初始的无序堆; 2. 将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,......Rn-1)和新的有序区(Rn),且满足R[1,2...n-1]<=R[n]; 3. 阅读全文
posted @ 2017-03-22 21:26 煎蛋啊 阅读(273) 评论(0) 推荐(1)
基数排序

摘要:基数排序的基本思想: 原理类似桶排序,这里总是需要10个桶,多次使用 首先以个位数的值进行装桶,即个位数为1则放入1号桶,为9则放入9号桶,暂时忽视十位数 然后再以十位的值进行装桶 最后在以百位的值进行装桶 这样倒出的值为011 014 023 072 084 101 对于一个int数组,请编写一个 阅读全文
posted @ 2017-03-22 17:34 煎蛋啊 阅读(436) 评论(0) 推荐(1)
计数排序

摘要:基数排序基本思想:计数排序是一个类似于桶排序的排序算法,其优势是对已知数量范围的数组进行排序。它创建一个长度为这个数据范围的数组C,C中每个元素记录要排序数组中对应记录的出现个数。 对于上述例子,认为人的身高在100cm--300cm之间,然后建立200个桶(pail),桶中存的是对应元素的个数,即 阅读全文
posted @ 2017-03-22 17:02 煎蛋啊 阅读(182) 评论(0) 推荐(0)
希尔排序

摘要:希尔排序基本思想:首先将待排序的元素分成多个子序列,使得每个子序列的元素个数相对较少,对各个子序列分别进行直接插入排序,待整个待排序序列基本有序后,在对所有元素进行一次直接插入排序。 1. 选择一个步长序列t1,t2,...,tk,满足ti>tj(i<j),tk=1; 2. 按步长序列个数k,对待排 阅读全文
posted @ 2017-03-22 15:44 煎蛋啊 阅读(349) 评论(1) 推荐(1)
快速排序

摘要:快速排序基本思想: 1. 分解:将输入的序列array[m,....,n]划分成两个非空子序列array[m,....,k]和array[k+1,....,n],使得array[m,....,k]中的任一元素的值不大于和array[k+1,....,n]中的任一元素的值。 2. 递归求解:通过递归调 阅读全文
posted @ 2017-03-22 11:29 煎蛋啊 阅读(223) 评论(0) 推荐(1)
归并排序

摘要:归并排序基本原理:对于给定的一组元素,首先将每两个相邻的长度为1的子序进行归并,得到(n/2)个长度为2或1的有序子序列,再将其两两归并,反复执行其过程,直到得到一个有序序列为止。 值得注意的是:在处理合并两个[]的时候,需要创建一个临时数组aux来保存A。还有边界条件的问题:第一个[]中的元素都处 阅读全文
posted @ 2017-03-22 10:35 煎蛋啊 阅读(208) 评论(0) 推荐(1)
插入排序

摘要:插入排序基本原理:对于给定的一组元素,初始时假设第一元素自成一个有序序列,其余的元素为无序序列,其余的元素为无序序列; 接着从第二个元素开始,按照记录的大小依次将当前处理的元素插入到其之前的有序序列中,直到最后一个元素插入到有序序列中为止。 数组{38,65,97,76,13,27,49} 第一趟排 阅读全文
posted @ 2017-03-21 21:41 煎蛋啊 阅读(244) 评论(0) 推荐(1)
选择排序

摘要:选择排序的基本思想:对于给定的一组元素,经过第一轮比较后得到最小的元素,然后将该元素与第一个元素的位置进行交换,接着对不包括第一个元素以外的其他记录进行第二轮比较,得到最小的元素并与第二个位置交换,重复该过程,直到进行比较的元素只有一个为止。 数组{38,65,97,76,13,27,49} 第一趟 阅读全文
posted @ 2017-03-21 21:28 煎蛋啊 阅读(205) 评论(0) 推荐(1)
冒泡排序

摘要:冒泡排序的基本思想就是对于给定的n个元素,从第一个元素开始,依次对相邻的两个元素进行比较,当前面的元素大于后面的元素时,交换其位置,进行一轮比较和换位后,n个元素中最大的数将位于第n位,然后对前(n-1)个元素进行第二轮比较,重复该过程,直到进行比较的元素只剩下一个。 数组{36,25,48,12, 阅读全文
posted @ 2017-03-21 21:07 煎蛋啊 阅读(221) 评论(0) 推荐(1)
单链表排序

摘要:这部分实现的排序方法是冒泡排序和快速排序。 冒泡排序的基本思想就是对于给定的n个元素,从第一个元素开始,依次对相邻的两个元素进行比较,当前面的元素大于后面的元素时,交换其位置,进行一轮比较和换位后,n个元素中最大的数将位于第n位,然后对前(n-1)个元素进行第二轮比较,重复该过程,直到进行比较的元素 阅读全文
posted @ 2017-03-21 20:50 煎蛋啊 阅读(16807) 评论(0) 推荐(2)
如何实现单链表反转

摘要:#include #include #include "string.h" #include "stdio.h" #include #include #include using namespace std; struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), n... 阅读全文
posted @ 2017-03-21 11:49 煎蛋啊 阅读(396) 评论(0) 推荐(1)

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3