剑指offer面试题
文章平均质量分 77
miaomiao328
这个作者很懒,什么都没留下…
展开
-
c++之复数类运算
在写之前本人头脑是懵的,因为完全忘记了复数是什么,原谅我高中数学不好。那么我们大体回顾一下复数,即a+bi,那么关于它的运算法则大体有以下几种。1.加法法则 复数的加法按照以下规定的法则进行:设z1=a+bi,z2=c+di是任意两个复数,则它们的和是 (a+bi)+(c+di)=(a+c)+(b+d)i;返回值类型也应为复数(complex)原创 2016-07-06 14:53:18 · 24228 阅读 · 4 评论 -
判断出栈序列是否合法
题目描述:1--元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。 分析如下:1.如果两个数组长度不相等,直接不合法2.如果两个数组都为空,合法3.S用来正常的压栈,q村正确的出栈序列代码如下:#include#include#原创 2017-07-21 11:33:31 · 2428 阅读 · 1 评论 -
链表带环问题1
给出一个链表;1.判断其是否带环?2.如果带环求环的长度?3.求环的入口节点?解题思路:用两个指针,快指针一次走两步,慢指针一次走一步,如果两指针相遇,那么链表带环,若两指针不相遇,则链表不带环。带环的几种情况:Node* List::find_meet_node(Node* Head) { if(Head==NULL) return N原创 2017-07-15 18:49:51 · 613 阅读 · 0 评论 -
合并两个有序链表
给出以下两个链表:要求:将两个合并为一个有序链表(合并完如上图所示)需要考虑的问题总结:合并之前我们需要考虑是否存在空链表(分三种情况)新链表的头(是哪个节点)合并中如果有一个已经为空(如下)代码如下:Node* List::MergeList(Node* Head1,Node* Head2){ if(Head1==NULL&&Head2==原创 2017-07-13 19:31:14 · 376 阅读 · 0 评论 -
找出链表的倒数第K个结点
给出一个链表如下图:要求:删除倒数第K个结点代码如下:Node* List::find_Penultimate_K(Node* Head,int k){ if(Head==NULL)//处理空链表 return NULL; Node* fast=Head; Node* slow=Head; while(k--) { if(fast==NULL)//判断K是否原创 2017-07-15 18:04:01 · 241 阅读 · 0 评论 -
链表面试题
1.简单链表给出如下链表,有以下要求:要求1:逆序打印该链表(如:3->2->5->1->4结果应为41523)解题思路:利用栈的后进先出特性来解决代码如下:void R_print(Node* Head)//逆序打印链表 { if(Head==NULL) return ; stack s1; Node* cur=Head; while(cur)原创 2017-07-12 20:15:15 · 446 阅读 · 0 评论 -
排序的链表中删除重复的结点
题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5.class Solution {public: ListNode* deleteDuplication(ListNode* pHead) { if (pHead==N原创 2017-06-18 19:08:01 · 549 阅读 · 0 评论 -
不用+的加法
今天我在牛客网上看到一个有趣的题。题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。其实当时是这样想的:你不让我用+,我可以用“++”,“+=”啊,事实证明我的代码也确实提交通过了。以下是我的代码:class Solution {public: int Add(int num1,int num2) { if(原创 2017-05-28 18:22:22 · 318 阅读 · 0 评论 -
求第三便宜的帽子
题目描述:度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少? 输入描述: 首先输入一个正整数N(N 输出描述: 如果存在第三便宜的帽子,请输出这个价格是多少,否则输出-1 输入例子: 10 (个数)10 10 10 10 20 20 30 30 40 40 输出例子: 30#inc原创 2017-05-26 17:21:53 · 453 阅读 · 0 评论 -
剑指offer:判定平衡二叉树
平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉原创 2017-05-23 23:37:37 · 278 阅读 · 0 评论 -
(树的层序遍历)从上往下打印出二叉树的每个节点,同层节点从左至右打印。
从上往下打印出二叉树的每个节点,同层节点从左至右打印。个人思考:使用一个队列一个栈一个存放节点,一个存放值。先将根节点加入到队列中,然后遍历队列中的元素,遍历过程中,访问该元素的左右节点,再将左右子节点加入到队列中来。假设有如下二叉树:输出结果应为 :1 2 3 4 5 6先检查是否为空树,是空树直接返回;将根节点插入队列q里: 1用tmp遍历该树,tmp=q.fron原创 2017-04-02 20:00:20 · 1001 阅读 · 0 评论 -
二叉树面试题(一) 重建二叉树
问题描述:由前序遍历和中序遍历重建二叉树(前序序列:1 2 3 4 5 6 - 中序序列:3 2 4 1 6 5)数据不含重复值。题目分析如下:前序遍历序列1 2 3 4 5 6,前序遍历规则是根--左--右。中序遍历序列3 2 4 1 6 5,中序遍历规则是左--根--右1.由前序遍历可知根节点一定为第一个元素1,在原创 2016-12-03 11:43:36 · 545 阅读 · 0 评论 -
大数据处理问题
大数据,就是指种类多、流量大、容量大、价值高、处理和分析速度快的真实数据汇聚的产物。通常会需要考虑存储空间是、效率等问题。解决大数据问题一般主要的思想,1.文件切分,(将大文件切成若干个小文件进行处理),2.哈希切分,3.使用位图。以下通过几个实例来进行进一步分析:1、海量日志数据,提取出某日访问百度次数最多的那个IP。(或者:给一个超过100G的文件,文件中存放着iP原创 2016-11-09 22:15:58 · 1805 阅读 · 0 评论 -
实现一颗二叉树的层序遍历。
1.--实现一颗二叉树的层序遍历。分析如下:1.如果此二叉树为空直接返回;2.要想层序遍历二叉树,我们必须要一个容器来保存它的左右孩子节点3.这个容器必须是先进先出,所以我们选择队列4.已经遍历过的节点必须从队列中pop出去代码如下:#include#includeusing namespace std;struct Node{ Node(int va原创 2017-07-21 15:33:44 · 1196 阅读 · 0 评论