Algorithm
2022-07-17
这个作者很懒,什么都没留下…
展开
-
枚举与搜寻
枚举:把目标物一一列出来,一边浏览,一边记录、计算。把所有东西都浏览过一边后,就能收集到充分的信息,进而解决问题。例子:求1到n的全部整数的立方和思路:依次枚举数字1到n,在枚举的过程中,累加这些数字的立方代码实现:#include #include int sum_of_cubes(int n){ int sum = 0; int i; for(i原创 2012-02-12 22:36:50 · 764 阅读 · 0 评论 -
leetcode(2)_Add Two Numbers
【题目】You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it a原创 2015-05-03 23:11:14 · 1564 阅读 · 0 评论 -
POJ题目分类
按照ac的代码长度分类(主要参考最短代码和自己写的代码)短代码:0.01K--0.50K;中短代码:0.51K--1.00K;中等代码量:1.01K--2.00K;长代码:2.01K以上。短:1147、1163、1922、2211、2215、2229、2232、2234、2242、2245、2262、2301、2309、2313、2334、2346、2348、2350、2352、2381、转载 2013-07-21 22:07:10 · 1127 阅读 · 0 评论 -
算法之归并排序算法(merge sort)
归并排序算法1.算法原理归并排序算法是分治法(Divide-and-Conquer)的典型应用。其操作的步骤如下:Divide:把n个元素的序列分为两个元素个数为n/2的子序列。Conquer:递归的调用归并排序算法对两个子序列进行排序Combine:对排好序的子序列进行合并,得到最后排序的结果。归并算法用示意图表示如下:归并排序算法的伪代码如下:M原创 2013-02-17 20:49:22 · 12484 阅读 · 0 评论 -
算法学习之最大子序列问题
最大子序列问题:即在给定序列中寻找一子序列使其和在所有子序列中最大。代码实现如下:#include #include using namespace std;const unsigned int N = 5;int maxSubSum1(const vector & a){ int max_sum = 0; int begin = 0;原创 2012-11-17 14:03:10 · 873 阅读 · 0 评论 -
排序算法之归并排序法
归并排序算法归并排序算法是一种外部存储设备最常用的排序算法,该排序法可以分为如下两个步骤:(1)将排序数据分为数个文件,其中每个文件的大小都是可以加载到内存空间,然后使用适当的内部排序算法进行排序,最后将排完序的数据写回文件中;(2)将第一个步骤创建的文件,两两归并称为了一个文件,最后,全部的文件都归并称为一个文件,则文件数据也就排序完成了。如下图所示的例子:一原创 2012-11-13 20:33:21 · 970 阅读 · 0 评论 -
排序算法之堆排序(Heap Sort)
堆排序是借助于一种称为堆的完全二叉树结构进行排序的,排序过程中,将向量中存储的数据看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中的父结点和孩子结点之间的内在关系来选择关键字最小的记录。实现方法:a)把待排序的记录存放在数组r[1‥n]中,将r看作一棵二叉树,每个结点表示一个记录,b)第一个记录r[1]作为二叉树的根,以后各记录r[ 2 ],…,r[n]依次逐层从左原创 2012-11-08 22:26:18 · 1284 阅读 · 0 评论 -
算法学习之字符串左移&右移
1.设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。方法一:每次将数组中的元素右移一位,循环K次,则实现了右移K位。例如,原始字符串:abcd1234右移一位:4abcd123右移一位:34abcd12右移一位:234abcd1右移一位:1234abcd循环4次,则实现了右移4次实现函数如下:原创 2012-08-08 19:40:28 · 2246 阅读 · 0 评论 -
微软面试100题——第一题
1.把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \4 8 12 16转换成双向链表4=6=8=10=12=14=16。首先我们定义的二元查找树 节点的数据结构如下:转载 2012-02-20 14:23:43 · 568 阅读 · 0 评论 -
孪生素数的求法
孪生素数:如果n和n+2都是素数,则称他们是孪生素数。思路:输入m,输出两个数均不超过m的最大孪生素数,例如m=20时,其输出的答案为17、19.代码实现如下:#include #include #include #include //is_prime函数用来判断输入的数x是否是素数int is_prime(int x){ int i; int m;原创 2012-02-13 19:04:08 · 3322 阅读 · 0 评论 -
leetcode(1)_Two Sum
【题目】Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the targe原创 2015-05-03 23:09:08 · 1742 阅读 · 0 评论