算法
iOS-null
这个作者很懒,什么都没留下…
展开
-
重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。#include #include using namespace::std;struct TreeNode原创 2016-09-24 23:04:19 · 159 阅读 · 0 评论 -
Floyd算法
动态规划: dist[i][j] = min(dist[i][j],dist[i][k]+dist[k][j])typedef enum{DG,DN,UDG,UDN}GraphKind;typedef int AdjType;typedef char VertexData;typedef struct ArcNode{ AdjType adj;}ArcNo原创 2016-12-05 15:22:46 · 306 阅读 · 0 评论 -
整数中1出现的次数
题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。class Solution {public: int NumberOf1Between1AndN原创 2016-12-04 11:38:27 · 252 阅读 · 0 评论 -
丑数
题目描述 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。class Solution {public: int GetUglyNumber_Solution(int n) { if (n <= 0)return 0; vector原创 2016-12-11 18:04:55 · 320 阅读 · 0 评论 -
把数组排成最小的数
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。class Solution {public: static bool cmp(int a,int b) { char buf[20]; string stra原创 2016-12-11 11:18:12 · 261 阅读 · 0 评论 -
Dijkstra 算法
#define MAX_VERTEX_NUM 20#define INFINITY 0x7FFFFFFFtypedef enum{DG,DN,UDG,UDN}GraphKind;typedef int AdjType;typedef char VertexData;typedef struct ArcNode{AdjType adj;}ArcNode;typedef stru原创 2016-11-29 15:33:39 · 264 阅读 · 0 评论 -
二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 int NumberOf1(int n) { int count = 0; if(n == 0) return 0; if(n == 0x80000000) return 1; if(n < 0){ n = n&0x7FFFF原创 2016-10-07 11:46:44 · 174 阅读 · 0 评论 -
矩形覆盖
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? class Solution { public: int rectCover(int number) { if(number <= 0) return 0; if( number== 1) return 1;原创 2016-10-07 11:05:23 · 168 阅读 · 0 评论 -
斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。int Fibonacci(int n) { if(n <= 0) return 0;//这里要注意判断小于0的情况 if(n == 1 || n == 2) return 1; int b = n-2; int d[2][2]; d[0][0] = 1; d[0][原创 2016-10-06 11:57:20 · 251 阅读 · 0 评论 -
百度网盘爬虫
实现这个只需三个步骤1.我们需要知道网络上具有共享资源的百度网盘的 uk并把他们放入数据库中。我们可以从下面的地址中快速的获得 ukhttp://yun.baidu.com/pcloud/friend/getfanslist?query_uk=1327787586&limit=25&start=0http://yun.baidu.com/pcloud/friend/gethotuserlist?ty原创 2016-11-02 23:11:50 · 6618 阅读 · 1 评论 -
树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) #include <iostream>using namespace::std; struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) : val(x), left(nu原创 2016-10-23 14:21:31 · 202 阅读 · 0 评论 -
用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型class Solution{public: void push(int node) { stack1.push(node); } int pop() { if(stack1.empty()) return原创 2016-09-25 00:32:24 · 205 阅读 · 0 评论 -
字符串排序
题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。class Solution { private: bool visit[20]; void sortSt原创 2016-11-27 10:48:49 · 263 阅读 · 0 评论