随笔分类 - 数据结构与算法
摘要:问题:产生n位元的所有格雷码。格雷码(Gray Code)是一个数列集合,每个数使用二进位来表示,假设使用n位元来表示每个数字,任两个数之间只有一个位元值不同。例如以下为3位元的格雷码:000 001 011 010 110 111 101 100 。如果要产生n位元的格雷码,那么格雷码的个数为2^...
阅读全文
摘要:1 // 最小的k个数.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include 6 #include 7 #include 8 #include 9 using namespace std; 10 11...
阅读全文
摘要:快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还...
阅读全文
摘要:约瑟夫环 问题描述:约瑟夫问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报...
阅读全文
摘要:题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。对于8位的char型字符而言,总共只有28=256个字符。我们可以新建一个大小为256的数组,把所有元素都...
阅读全文
摘要:题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。由于题目与字符出现的次数相关,我们可以统计每个字符在该字符串中出现的次数。要达到这个目的,我们需要一个数据容器来存放每个字符的出现次数。在这个数据容器中可以根据字符来查找它出现的次数,也就是说这个容器的作用 是把一个...
阅读全文
摘要:题目:某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间。 要注意分析题目,一般排序要么是O(n^2),要么是O(nlogn)。但这里题目特别强调是对一个公司的员工的年龄作排序。员工的数目虽然有几万人,但这几万员工的年龄却只有几十种可能。上班早
阅读全文
摘要:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任一结点或者NULL。其结点的C++定义如下:struct ListNode{ int value; ListNode *next; ListNode *sibling; ...
阅读全文
摘要:带头结点的链表结点定义如下:1 struct ListNode2 {3 int value;4 ListNode *next;5 };代码如下: 1 ListNode* Reverse(ListNode *pHead) 2 { 3 ListNode *pReverse = N...
阅读全文
摘要:所谓的平衡二叉树,就是指数中任一结点的左右子树深度相差不超过1。下图就是一个平衡二叉树:解法1:很容易想到,遍历每一个结点时,调用函数TreeDepth()求得左右子树的深度,如果所有左右子树的深度相差不超过1,那么该树就是一个平衡二叉树。代码如下: 1 bool isBalan(TreeNode ...
阅读全文

浙公网安备 33010602011771号