自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

灯火阑珊处

相爱没有那么容易,每个人有ta的脾气

  • 博客(15)
  • 问答 (1)
  • 收藏
  • 关注

原创 剑指Offer之 - 树中两个结点的最低公共祖先

题目: 求树中两个节点的最低公共祖先。 思路一: ——如果是二叉树,而且是二叉搜索树,那么是可以找到公共节点的。 二叉搜索树都是排序过的,位于左子树的节点都比父节点小,而位于右子树上面的节点都比父节点大。 如果当前节点的值比两个结点 的值都大,那么最低的共同的父节点一定是在当前节点的左子树中,于是下一步遍历当前节点的左子节点。 如果当前节点的值比两个结点的值都小,那么最低的

2015-04-29 16:07:14 876

原创 剑指Offer之 - 不用加减乘除做加法

题目: 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/、四则运算符号 思路: 两数异或得到没有进位的数,两数相与得到进位结果,进位左移一位,再与异或结果相异或,直至进位为0 代码: #include using namespace std; //题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/、四则运算符号 //思路:两数异或得到没有进位的数,

2015-04-28 10:55:08 410

原创 剑指Offer之 - 圆圈中最后剩下的数字

题目: 0,1,...,n-1这n个数排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删词第3个数字,则删除的前四个数字一次是2、0、4、1,因此最后剩下的数字是3. 思路: 方法1:用环形链表模拟圆圈,链表可以用c++的STL库中的list来表示,删除链表其中一个结点

2015-04-27 15:58:22 452

原创 剑指Offer之 - 扑克牌的顺子

题目: 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10的数字为本身,A为1,J为12,K为13,而大、小王可以看成任意数字。(用0表示,可以代替任意数) 思路: 先排序,然后求0(大王或者小王)的个数,最后再求相邻两个数的差的总和。如果0的个数> 总和,则是顺子,如果 如果出现对子,则一定不是顺子 代码: #include //#includ

2015-04-27 14:32:22 413

原创 剑指Offer之 - n个骰子的点数

题目: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率 思路1: 由题目可知,最小点数之和为n,最大点数之和为6n。要想求出n个骰子的点数和,可以先把n个骰子分为两堆:第一堆只有一个,另一个有n-1个。单独的那一个可能 出现从1到6的点数。我们需要计算从1到6的每一种点数和剩下的n-1个骰子来计算点数和。接下来把剩下的n-1个骰子还是分

2015-04-27 09:40:40 501

原创 剑指Offer之 - 翻转单词顺序 VS 左旋转字符串

题目: 1、输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。 例如输入字符串"I am a student.",则输出"student. a am I"。 2、字符串的左旋操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。 比如输入字符串"abcdefg"和数字2,该函数将返回左旋转2

2015-04-26 15:30:21 525

原创 剑指Offer之 - 和为s的两个数字 VS 和为s的连续正数序列

题目: 1、输入一个递增排序的数列和一个数字s,在数组中查找两个数,使得它们的和正好是s,如果有多对数字的和等于s,输出任意一对即可。类似3Sum和4Sum。分别参考:http://blog.csdn.net/u012243115/article/details/41361781 和 http://blog.csdn.net/u012243115/article/details/41719831

2015-04-26 14:31:23 396

原创 剑指Offer之 - 数组中只出现一次的数字

题目: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。找出这两个数字。时间复杂度O(n),空间复杂度:O(1)。 例如数组:int num[] = {1,1,2,3,2,5,4,5,6,6};找出3和4。 代码: #include using namespace std; //功能:数组中只出现一次的数字 //一个整型数组里除了两个数字之外,其他的数字都出现了两次。找出这两个

2015-04-26 11:28:52 555

原创 剑指Offer之 - 二叉树的深度

题目: 1、求二叉树的最大深度和最小深度。 2、判断一棵二叉树是不是平衡二叉树。 代码: #include using namespace std; struct BinaryTreeNode { int m_nValue; BinaryTreeNode *m_pLeft; BinaryTreeNode *m_pRight; BinaryTreeNode(){} Binary

2015-04-26 10:51:00 393

原创 剑指Offer之 - 数字在排序数组中出现的次数

题目: 统计一个数字在排序数组中出现的次数。如{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4. 思路: 如果先找到数字,然后再往前后遍历,复杂度有可能退化到O(n) ,比如数组全是3。 二分查找,直接找第一次出现的次数和最后出现的次数。 代码: #include using namespace std; //功能:统计一个数字在排序数组中出

2015-04-24 17:07:02 355

原创 剑指Offer之 - 数组中的逆序对

题目: 在数组中的两个数字如果前面一个数字大于后面一个数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 如数组{7,5,6,4}中,有5个逆序对,分别是(7,6)、(7、5)、(7,4)、(6、4)、(5、4) 思路: 利用归并排序的过程求解逆序对。 归并排序是将数列a[l,h]分成两半a[l,mid]和a[mid+1,h]分别进行归并排序,然后再将这两

2015-04-24 15:34:21 357

原创 剑指Offer之 - 丑数

题目:  我们把只包含因子2、3和5的数称作丑数(UglyNumber)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。 思路: 1、  写一个函数判断一个数是不是丑数,然后每判断一个数是丑数,则计数+1 ,直到计数到达1500。 代码: #include #include using namespace

2015-04-23 15:25:34 936

原创 剑指Offer之 - 最小的k个数

题目: 输入n个整数,找出其中最小的k个数。如输入4、5、1、6、2、7、3、8 这8个数字,则最小的 4 个数字是1、2、3、4 思路: 1、基于快排的思路,每排序一次可以确定一个数的位置,如果这个位置正好为k,则前k个数就是最小的k个数字 。 时间复杂度:O(n) ,注意此时会改变原来的数组 代码:#include #include using namespace std; /

2015-04-22 14:04:17 514

原创 LeetCode OJ 之 Number of 1 Bits (二进制位1的个数)

题目: Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight). For example, the 32-bit integer ’11' has binary representati

2015-04-21 17:07:58 405

原创 LeetCode OJ 之 Reverse Bits (翻转二进位)

题目: Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as0

2015-04-21 17:01:55 377

空空如也

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

TA关注的人

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