algorithms
佳悦
当时光久远,初心始现
展开
-
排序算法--选择排序
输入10个数据,按照从大到小开始排列。提示:冒泡排序,选择排序,希尔排序,快速排序,二分插入排序,选择排序选择排序在计算机科学中,选择排序是一种排序算法,特别是就地 比较排序。它具有O(n 2)时间复杂性,使其在大型列表中效率低下,并且通常比类似的插入排序更差。注意到选择排序的简单性,并且在某些情况下,特别是在辅助存储器有限的情况下,它具有超过更复杂算法的性能优势。原创 2017-09-11 00:00:15 · 269 阅读 · 0 评论 -
[pat 乙级] 福尔摩斯的约会
【题目描述】大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母’D’,代表星期四;第2对相同的字符是’E’,那是第5...原创 2018-07-05 20:30:58 · 260 阅读 · 0 评论 -
埃拉托斯特尼筛法-更简单判断素数
埃拉托斯特尼筛法思想:素数的倍数一定不是素数要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。算法步骤: 给出要筛数值的范围n,找出n以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉,因为2的倍数一定是合数;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去。如果觉得很难...原创 2018-07-04 21:05:56 · 1165 阅读 · 0 评论 -
【leetcode 811】Subdomain Visit Count
##Map#####[Subdomain Visit Count]#######811-问题描述####A website domain like "discuss.leetcode.com" consists of various subdomains. At the top level, we have "com", at the next level, we have "leetcode.c...原创 2018-04-01 22:51:42 · 730 阅读 · 1 评论 -
Number of Matching Subsequences--leetcode 792
[Number of Matching Subsequences] 792-问题描述Given string S and a dictionary of words words, find the number of words[i] that is a subsequence of S.Example :Input: S = "abcde"words = ["a", "bb", "acd", ...原创 2018-03-10 23:01:37 · 803 阅读 · 0 评论 -
[leetcode] 758.Bold Words in String
[problem]758. Bold Words in String Difficulty: EasyGiven a set of keywords words and a string S, make all appearances of all keywords in S bold. Any letters between and tags become b原创 2018-01-15 19:39:55 · 866 阅读 · 0 评论 -
[leetcode] Find Anagram Mappings
[problem] Find Anagram Mappings My SubmissionsDifficulty: EasyGiven two lists A and B, and B is an anagram of A. B is an anagram of A means B is made by randomizing the order of the elem原创 2018-01-15 17:27:52 · 574 阅读 · 0 评论 -
模拟退火算法
wiki里说模拟退火是一种通用概率算法,用来在固定时间内寻求在一个大的搜寻空间内找到的最优解,退火是将材料加热后再经特定速率冷却,目的是增大晶粒的体积,并且减少晶格中的缺陷。材料中的原子原来会停留在使内能有局部最小值的位置,加热使能量变大,原子会离开原来位置,而随机在其他位置中移动。退火冷却时速度较慢,使得原子有较多可能可以找到内能比原先更低的位置算法先以搜寻空间内一个任意点作起始:每一步原创 2017-04-22 17:03:49 · 816 阅读 · 0 评论 -
灰色预测模型--GM(1,1)预测模型
灰色预测模型主要特点:模型使用的不是原始数据序列,而是生成的数据序列。GREY MODEL即对原始数据作累加生成或者其他方法得到近似的指数规律再进行建模的方法。GREY MODEL一般只需要4个数据就能解决历史数据少,序列完整性以及可靠性低的问题。缺点是只适合中短期的预测,只适合指数增长的预测。GM(1,1)预测模型GM(1,1)表示模型是一阶微分方程,且只含有一个原创 2017-04-27 10:04:36 · 11437 阅读 · 0 评论 -
遗传算法
以遗传算法为例,其工作步骤可概括为:(1) 对工作对象——字符串用二进制的0/1或其它进制字符编码。(2) 根据字符串的长度L,随即产生L个字符组成初始个体。(3) 计算适应度。适应度是衡量个体优劣的标志,通常是所研究问题的目标函数。(4) 通过复制,将优良个体插入下一代新群体中,体现“优胜劣汰”的原则。(5) 交换字符,产生新个体。交换点的位置是随机决定的原创 2017-08-26 12:19:06 · 488 阅读 · 0 评论 -
ZigZag Conversion
[problem]The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)P A H NA原创 2018-01-04 18:02:55 · 242 阅读 · 0 评论 -
Dynamic Programming 动态规划
《挑战程序竟赛》这本书上对动态规划的定义是: 动态规划法并不是一种针对特定问题的解法,而是一种通用的编程技巧。 维基百科(Wikipedia)上的定义是: 动态规划(英语:Dynamic programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学 中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。原创 2018-01-04 17:53:30 · 260 阅读 · 0 评论 -
Median of Two Sorted Arrays 求两个排序数组中位数 题解翻译
【Problem】There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).Example 1:原创 2017-12-17 10:49:23 · 244 阅读 · 0 评论 -
Longest Palindromic Substring
【Problem】Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example:Input: "babad"Output: "bab"Note: "aba" is also a v原创 2018-01-02 19:29:54 · 238 阅读 · 0 评论 -
longest-substring-without-repeating-characters求最长不重复子串思路及c++代码实现
【题目】Given a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the ans原创 2017-12-09 16:19:01 · 304 阅读 · 0 评论 -
栈的应用-汉诺塔游戏
栈(stack)它的结构为LIFO(last in first out)后进先出。如图所示:汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能原创 2017-11-21 12:53:21 · 620 阅读 · 0 评论 -
单链表与双向链表
单链表链表中的数据是以节点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。以"结点的序列"表示线性表称作线性链表(单链表)单链表是链式存取的结构,为找第 i 个数据元素,必须先找到第 i-1 个数据元素。双向链表双向链表也叫双链表,是链表的一种,它的每个数据结原创 2017-12-08 18:41:11 · 451 阅读 · 0 评论 -
快速算法排序的步骤和应用
【快速算法排序的步骤】快速排序:1.将序列重排后分成左右两部分,保证两部分有一部分的所有元素都比另一部分的所有元素要小。有许多不同版本的快速排序以不同的方式选择枢轴。 1.1 总是选择第一个元素作为枢轴。 1.2 总是选择最后一个元素作为枢纽(下面实现) 1.3 选择一个随机元素作为枢轴。 1.4 挑选中位数为枢纽。当每一趟选择当前所有子序列中的一个...原创 2018-07-07 08:18:45 · 281 阅读 · 0 评论