算法学习之路
弦音后弹
这个作者很懒,什么都没留下…
展开
-
学习笔记之TAOCP--字符串是否包含问题(学习“结构之法”博客)
字符串是否包含问题: str1:"abcdefgh" str2:"hgbsc" 即判断str2是否被str1包含的问题。此问题如果不考虑复杂度的问题, 用最基本的方法即循环搜索的方式即可暴力求解。但其效率相对低下。 在看“结构之法”的博客中有种将其映射为hashTable的方式能够在访问每个字母一次的情况下给出解答,较高效。代码如下: int原创 2013-11-14 20:16:33 · 592 阅读 · 0 评论 -
求公共最长子序列
/* LCS公共最大子序列 dp[i][j]=0;//i=0||j=0时。 dp[i][j]=dp[i-1][j-1]+1;//s[i]==t[j]时 dp[i][j]=max(dp[i-1][j],dp[i][j-1]);//s[i]!=t[j]时 根据这个规律很容易写出代码*/#include#includeusing namespace std;con原创 2014-08-14 20:30:00 · 610 阅读 · 0 评论 -
字符串中的字符是否唯一
实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结构)这个是原创 2014-08-11 21:56:25 · 500 阅读 · 0 评论 -
快速排序的简单实现
快速排序为什么能快呢? 结合分治的车略原创 2014-08-11 21:35:13 · 543 阅读 · 0 评论 -
LeetCode之逆波兰式求解
计算逆波兰式子:有效的操作只有 +, -, *, /. 每一个输入不是一个整数就是一个操作符。Some examples: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6#include#include#i原创 2014-08-23 22:02:16 · 904 阅读 · 0 评论 -
从尾到头打印链表
struct ListNode{ int m_key; ListNode *next;};原创 2014-08-11 21:17:25 · 513 阅读 · 0 评论 -
LeetCode之小孩分糖果
给定一群站好队的小孩并且按某项分值排名(姑且假设为年龄吧),年龄大的要比他身边年龄小的拿的糖要多,求怎么分配糖果使得分配的糖果数最少。用一个数组从左到右再从右到左的遍历,向前遍历时若右边的比左边的大则其值为前一个糖果数+1,向后遍历时则判断如果比后面的小孩的年龄要大且糖果数比其还少则更改其糖果数为后面小孩分的糖果数+1.具体描述代码:#include#includeusing n原创 2014-08-23 22:54:20 · 1543 阅读 · 0 评论 -
DP求两个字符串的编辑距离
计算字符串的相似度(编辑距离)为了判断字符串的相似程度,定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为: 1.修改一个字符。2.增加一个字符。3.删除一个字符。原创 2014-08-22 21:57:26 · 790 阅读 · 0 评论 -
求旋转有序数组的最小值和在旋转数组中查找
#includeusing namespace std;int find2(int A[],int n){ int high=n-1; int low =0; int mid; while(A[high]<=A[low]) { if(high-low==1) { mid=high; break; }原创 2014-09-04 22:10:19 · 797 阅读 · 0 评论 -
堆排序的非递归算法
/*by leowang 堆排序的非递归算法*/#include using namespace std;/* run this program using the console pauser or add your own getch, system("pause") or input loop */int parent(int i){//此处数组从1开始原创 2014-08-04 21:14:22 · 650 阅读 · 0 评论 -
全排列的递归实现
全排列问题,假设让你打印出1234的全排列。考虑这个问题,观察原创 2014-08-04 21:36:29 · 663 阅读 · 0 评论 -
排序学习ING.......
排序作为计算机中最为基础的算法,当然是在面试时最为受考官欢迎的考点之一。因此很有必要对各个排序进行分析和比较。一、插入排序。 首先当然是最简单的插入排序了,插入排序显而易见就是从前往后的排依次排好序将后面的元素一一与前面的比较找到自己的合适位置,故名为插入。 代码如下: void insertSort(int *a,const int N) { int fl原创 2014-03-05 11:10:07 · 752 阅读 · 0 评论 -
C++内存分区(学习笔记)
对于一个程序员来说,对于内存必须有一定的了解才能够更好的编码。 c++中内存分区: 1)堆:堆区由程序员手动分配和释放,且完全不同于数据结构中的堆,分配方式类似链表。由new/delete或malloc/free来申请和释放。若程序员忘记释放则由系统于程序结束时回收。 2)栈:由编译器自动分配和释放,存放函数的参数值、局部变量的值等。操作方式类似数据结构中的栈。原创 2014-03-03 14:31:24 · 728 阅读 · 0 评论 -
学习笔记之TAOCP--字符串查找(学习“结构之法”博客)
此问题为: 问str1是否有str2#include #include using namespace std;bool match(string strLong,string strShort){ size_t sS = strShort.length(); size_t lS = strLong.length(); int j; bool isM原创 2013-11-17 20:14:15 · 590 阅读 · 0 评论 -
删除模式串中出现的字符
删除模式串中出现的字符,如“welcome to asted”,模式串为“aeiou”那么得到的是“wlcm t std”。#include#includeusing namespace std;char *re(char *str,char *model){ if(str==NULL||model==NULL) return NULL; i原创 2014-09-02 10:58:20 · 919 阅读 · 0 评论