算法基础
zyzhangyue
这个作者很懒,什么都没留下…
展开
-
递归
1、一个楼梯有20级,每次走1级或是2级,从底走到顶一共有多少中走法?算法: 设 n 是阶数,f(n) 是上 n 阶的不同走法数,则第一步可以走一阶或者是两阶, 那么这三种情况下剩余的阶数分别为 n-1、n-2, 所以 f(n) = f(n-1) + f(n-2)。//递归解法int solution1(int n){ if(n ==原创 2015-05-16 22:59:13 · 478 阅读 · 0 评论 -
矩阵置零
题意是要求在01矩阵中,把0的点的行和列都置零。#include #include #include using namespace std; void unguarded_setZero(int *matrix, int m, int n, int i, int j){ for (int ii = 0; ii { *(ma原创 2015-12-05 19:08:30 · 609 阅读 · 0 评论 -
反转链表
反转链表 反转链表是一个常见的面试题,现在出现了N多种的变形,各种增加难度。今天看到了一个从m反转到n的,于是手写代码试了试。发现要想把所有情况覆盖全达到bug free还是挺难的。于是,根据各种反转链表题总结了一些比较简练的代码。比较:接口限定的反转链表。// From curr reverse to end, return reversed linked list head.转载 2015-12-05 19:13:20 · 380 阅读 · 0 评论 -
字符串
1、字符串移位包含问题//普通解法bool contain_check(){ char s[6] ="AABCD"; char d[5] ="CDAA"; int len = strlen(s); for(int i=0; i { char temp = s[0]; for(int j=0;原创 2015-05-17 13:15:42 · 702 阅读 · 0 评论 -
二叉树
题目:输入两棵二叉树A和B,判断树B是不是A的子结构bool IsChildTree(Node * father, Node * son){ if(father == NULL && son == NULL) return true; if(father == NULL && son != NULL) return原创 2015-05-16 23:31:09 · 318 阅读 · 0 评论 -
链表
链表:1、注意是否有带头结点。2、单链表的建立:顺序建表(尾插法)、逆序建表(头插法)。单链表插入、删除操作需要寻找前驱结点。3、双向链表和单向链表相比,多了一个前驱指针,单向链表在删除结点时候要遍历链表,双向链表在删除不需要遍历。一、判断两个链表是否相交:(假设两个链表都没有环) 1、判断第一个链表的每个节点是否在第二个链表中 2、把第二个链表连接到第一个后面,判断得到的链原创 2015-05-16 23:28:45 · 379 阅读 · 0 评论 -
动态规划
1、最长公共子序列、最长公共子串最长公共子序列(Longest-Common-Subsequence,LCS)dp[i][j]:dp[i][j]表示长度分别为i和j的序列X和序列Y构成的LCS的长度dp[i][j] = 0,如果i=0 或 j=0 dp[i][j] = dp[i-1][j-1] + 1,如果 X[i-1] = Y[i-1] dp[i][j] = max{ dp[原创 2015-05-16 23:29:51 · 321 阅读 · 0 评论 -
数组
1、写一个函数找出一个整数数组中第二大的数。// 时间复杂度O(n)const int MINNUMBER =-32767;int find_sec_max(int data[],int count){数组数组 int maxnumber = data[0]; int sec_max = MINNUMBER; for(int i =1; i原创 2015-05-16 23:25:28 · 390 阅读 · 0 评论 -
数字
1、整型数V的二进制中1的个数//普通解法:除以2,看余数int Count(int v){ int num = 0; while(v) { if(v % 2 == 1) ++ num; v /= 2; } return num;} //使用位移i原创 2015-05-16 23:24:10 · 372 阅读 · 0 评论 -
Wildcard Matching
Wildcard Matching ‘?’匹配任意单个字符,‘*’匹配任意字符序列(包括空字符序列)。如果匹配整个串返回true。例:isMatch("aa","a") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "*") → trueisMatch("aa", "a*原创 2015-12-05 19:07:08 · 375 阅读 · 0 评论