5. 算法题
文章平均质量分 58
玄苦大师233
机会往往是长期准备和酝酿的而不能只靠一时的主动与激情所以认真写好技术博客吧
新博客 =》https://chenguolin.github.io/
展开
-
【53】给定n个整型数,怎样让这n个数的使用空间最小
有一道面试题: 给定n个整型数,怎样让这n个数的使用空间最小。 ok,我们都知道在32位的机器下,int类型的数占4个字节,因此n个数总的使用空间应该是4n。(64位不做解释)那我们怎么样才能使得n个数字的使用空间最小呢? 一. 我们先来看一个例子 假设现在有3个数,1,2,3。 我们都知道数字最后都是以二进制的...原创 2014-12-27 22:57:14 · 1706 阅读 · 3 评论 -
【44】Evaluate Reverse Polish Notation
题目链接:Evaluate Reverse Polish Notation题目意思: 给的一个表达式,求值代码:class Solution {public: bool IsOperator(const string &str); int GetStackTop(stack<int> &stack); ...原创 2014-10-26 15:44:32 · 806 阅读 · 0 评论 -
【43】 Reverse Words in a String
题目链接:Reverse Words in s String题目意思: 给定一个字符串,要求把字符串中的"单词"反转 1. 所谓"单词"指的的连续的非空白字符 2. 必须把前后缀空格去掉 3. 连续多个空格要合并为一个代码class Solution {public:...原创 2014-10-26 00:05:09 · 788 阅读 · 0 评论 -
【42】Maximum Product Subarray
题目链接题目意思: 给定一个数组,求最大连续子序列的乘积分析: 简单dp。maxDp[i]表示以num[i]结尾的最大子序列乘积,minDp[i]类似 maxDp[i] = max{num[i], maxDp[i-1]*num[i], minDp[i-1]*num[i]} minDp[i] = min{num[i], minDp[i-1]*nu...原创 2014-10-19 17:48:43 · 841 阅读 · 0 评论 -
【31】给定一个二叉树打印出所有从根结点到叶子结点路径和为 k 的路径
题目:给定一个二叉树要求打印出所有从根节点原创 2014-06-12 20:36:38 · 3924 阅读 · 1 评论 -
【12】设计一个不能被继承的类
题目:yong原创 2014-05-26 14:32:14 · 976 阅读 · 0 评论 -
【10】求1+2+3.....+n
题目:原创 2014-05-26 12:15:18 · 1362 阅读 · 0 评论 -
【6】连续序列和为s
题目:输入一个整数s,打印出所有和为s的连续整数序列(至少含有2个数)。例如输入9,则输出2、3、4和4、5两个序列方案一:由于序列至少要2个数,则两个数上限值为(1+s)/2,我们可以枚举该序列的起点和终点求所有满足的序列。时间复杂度为O(n^2),效率比较低方案二:我们设置两个指针start和end分别表示当前序列的起点和终点,并记序列和为sum。当sum = s的时候输出这个原创 2014-05-24 21:07:53 · 1579 阅读 · 1 评论 -
【26】希尔排序
1.原创 2014-06-08 12:59:33 · 1440 阅读 · 0 评论 -
【39】链表合并
题目: 输入两个原创 2014-06-17 22:18:21 · 1359 阅读 · 1 评论 -
【27】链表反转
题目:给定一个单链表的头结点要求反转该链表并要求不能改变更改链表的结构分析:1. 假设一个链表如下 headNode -> node1 -> node2 -> node3 -> node4 -> NULL2. 则反转完这个链表之后,希望得到如下链表 NULL 3. 此时链表的头结点变成了node4,我们可以枚举整个链表,对每一个结点我们保存下前面一个结点和下面一个结点,然后更改结点内部原创 2014-06-12 16:29:30 · 1303 阅读 · 0 评论 -
【37】调整数组顺序使奇数位于偶数前面
题目:原创 2014-06-16 13:14:00 · 1538 阅读 · 0 评论 -
【46】Insertion Sort List
题目链接:Insertion Sort List题目意思: 利用插入排序,对链表排序代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(N...原创 2014-11-08 16:42:14 · 841 阅读 · 0 评论 -
【41】Find Minimum in Rotated Sorted Array
题目链接:Find Minimun in Rotated Sorted Array题目意思: 给定一个旋转数组,找出这个旋转数组的最小元素。旋转数组的定义是,把一个从小到大排好序的数组,取一部份放到末尾,例如0 1 2 4 5 6 7 取 0 1 2放到末尾,变成旋转数组4 5 6 7 0 1 2代码:class Solution {public: i...原创 2014-10-19 11:25:29 · 1597 阅读 · 0 评论 -
【45】Max Points on a Line
题目链接:Max Points On a Line题目意思: 在二维平面上,有n个点,求同一条直线上最多点的个数题目分析: 1. O(n^2)直接暴力求每个点所在所有直线的最大值,利用map来映射 2. 有个wa点有可能重复出现,比如(1,1) 和 (1,1)应该算两个代码:/** * Definition for a p...原创 2014-11-02 00:00:34 · 771 阅读 · 0 评论 -
【40】二叉树子结构
题目:输入两个二叉树A和B的根节点,判断二叉树B是否为A的子结构分析:1. 两个二叉树如下所示 A树 B树 2. 要查找树A中是否包含数B一样的子结构,我们可以分成两步。 ...原创 2014-06-23 10:04:10 · 1241 阅读 · 0 评论 -
【33】利用归并排序求逆序数对
题目:利用归并排序求解一个数组中的逆序数对分析:1. 什么是逆序数对,例如给定数组{7, 5, 6, 4},对于每个数num,如果num之前有多少个数大于num则说明num这个数构成逆序数对有多少个 7有0个,5有1个,6有1个,4有三个,因此数组中总的逆序数对为5。2. 怎么利用归并排序来求逆序数对呢? (1)假设数组为{7, 5, 6, 4}...原创 2014-06-13 10:18:46 · 1687 阅读 · 0 评论 -
【32】计算两个链表的公共长度
题目:给定两个链表的头结点,求两个链表的公共长度。分析:1. 两个链表无非就两种关系(其它特殊关系都可以看成是这两种的特殊关系) (1)不相交: (2)相交: 2. 对于第一种情况,两个链表不相交则公共长度为0。第二种情况是从第一个公共结点之后所有点都是公共的,因此可以求出公共长度。3. 怎么求两个链表公共长度呢...原创 2014-06-13 08:54:00 · 1432 阅读 · 0 评论 -
【54】给定一个数n,求1*2*3*...*n 结果中末尾0的个数
面试题目: 给定一个数n,求1*2*3*...*n 结果中末尾0的个数。1. 我们先看一个特殊的例子,假设n是100的情况下。 根据题目的意思,我们需要求的是1*2*3*...*100的结果中末尾0的个数。 回顾一下小学4年级的数学知识,一个数末尾加一个0,相当于乘上一个10。 ok,假设有一个能够被10整除的数sum,那么sum = 10*N =&g...原创 2015-03-20 16:14:32 · 1250 阅读 · 0 评论 -
【52】Binary Tree Postorder Traversal
题目链接:Binary Tree PostOrder Trveral题目意思: 给定一棵二叉树,求后续遍历序列代码:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * ...原创 2014-12-15 20:30:10 · 698 阅读 · 0 评论 -
【51】Linked List Cycle II
题目链接:Linked List Cycle II题目意思: 给定一个链表,如果链表有环求出环的起点,否则返回NULL解题思路: 1. 判断链表是否有环: 两个指针,一个一次走一步,一个一次走两步,如果指针相遇说明有环,否则无环。 2. 如果有环的情况下,我们可以画个图(图片来自网络) 假设两个指针在z点相遇。则 ...原创 2014-12-14 14:42:23 · 828 阅读 · 0 评论 -
【50】 Linked List Cycle
题目链接:linked List Cycle题目意思: 给定一个链表,判断链表是否有环代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), ne...原创 2014-12-11 20:57:06 · 1074 阅读 · 0 评论 -
【49】Reorder List
题目链接:Reorder List题目意思: 给的一个链表,要求对链表重新排序。 例如L0->L1->L2.....->Ln,要求重新排序变成L0->Ln-1->L1->Ln-2->L2....代码:/** * Definition for singly-linked list. * str...原创 2014-12-10 21:18:57 · 652 阅读 · 0 评论 -
【48】 Binary Tree Preorder Traversal
题目链接:Binary Tree Preorder Traversal题目意思: 给定一个二叉树根节点,求前序序列代码:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * ...原创 2014-11-09 17:17:07 · 745 阅读 · 0 评论 -
【47】Sort List
题目链接:Sort List题目意思: 给定一个链表头结点,在O(nlogn)时间内进行排序分析: 比较排序下限是O(nlogn),可以选择归并排序解决(事实证明,快速排序会TLE)代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * L...原创 2014-11-09 01:05:43 · 839 阅读 · 0 评论 -
【38】求链表倒数第k个结点
题目:输入一个链表,输出链表中的倒数第k原创 2014-06-16 18:31:08 · 1171 阅读 · 0 评论 -
【35】实现Power函数
题目:原创 2014-06-15 09:46:48 · 3050 阅读 · 0 评论 -
【36】在O(1)的时间删除链表结点
1.原创 2014-06-15 11:43:49 · 1184 阅读 · 0 评论 -
【2】输入一颗二叉树判断是不是平衡二叉树
题目:输入一颗二叉树的根结点,判断该二叉树是不是平衡二叉树。平衡二叉树是满足所有结点的左右子树的高度差不超过1的二叉树方案一:遍历数组的每一个结点,对每一个结点求它的左右子树的高度并进行判断。时间复杂度大于O(n),小于O(n^2)效率较低,因为有很多点需要重复访问。//二叉树的结点struct BinaryTreeNode{ int m_value; Bin原创 2014-05-23 21:08:24 · 3033 阅读 · 0 评论 -
【1】数字在数组中出现的次数
题目:统计一个数字k在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,输出4次方案一:扫描数组,记录第一个出现的k和最后一个k中间有多少个,时间复杂度为O(n)方案二:由于数组是有序的,那么我们可以利用二分的思想,求出k在数组中的第一个位置和最后位置相减即可。时间复杂度为O(logN)注意严格按照良好的C++编码风格#include原创 2014-05-23 20:09:49 · 2199 阅读 · 0 评论 -
【9】约瑟夫环问题
题目:给定n个数形成一个环原创 2014-05-25 21:33:01 · 1079 阅读 · 0 评论 -
【14】最近公共祖先问题
题目:给定原创 2014-05-26 19:48:36 · 1385 阅读 · 0 评论 -
【13】编写实现atoi函数
题目:给定一个字符串,要求转成原创 2014-05-26 17:38:02 · 1209 阅读 · 0 评论 -
【11】不能使用四则运算求两个整数的和
题目:geid原创 2014-05-26 12:31:11 · 1270 阅读 · 0 评论 -
【25】实现一个含有min函数的栈的通用模板
题目:设计一个栈类型,使得在该栈类型中有一个函数min可以得到栈的最小元素,要求这个栈的push、pop、min都是O(1)。原创 2014-06-08 08:27:53 · 1252 阅读 · 0 评论 -
【24】六大常用排序算法
一.原创 2014-06-07 18:41:01 · 3125 阅读 · 0 评论 -
【22】用两个栈实现队列
题目:用两个栈实现一个队列,队列的声明如下原创 2014-06-03 22:33:39 · 1133 阅读 · 0 评论 -
【23】二叉树的相关操作
一. 二叉树的结点表示原创 2014-06-03 23:39:53 · 1021 阅读 · 0 评论 -
【21】重建二叉树
题目:输入某个二叉树的前序遍历和中序遍历的jieg原创 2014-06-03 20:09:21 · 1292 阅读 · 0 评论 -
【4】实现一个简单的String类
题目:给定一个String类的原创 2014-05-24 15:32:57 · 1057 阅读 · 0 评论