算法
小贤2016
中山大学数据科学与计算机学院16级研究生
展开
-
一天一个算法: 前缀,中缀,后缀表达式的转换
中缀表达式转换成前缀和后缀: http://blog.csdn.net/antineutrino/article/details/6763722/后缀表达式转中缀表达式: http://blog.csdn.net/qq789045/article/details/51018042转载 2017-05-11 16:43:18 · 314 阅读 · 0 评论 -
一天一个算法: 随机洗牌算法
洗牌算法是我们常见的随机问题,在玩游戏、随机排序时经常会碰到。它可以抽象成这样:得到一个M以内的所有自然数的随机顺序数组。 洗牌算法大多都是建立在随机数的基础上的,现在介绍几种随机数基础上的随机洗牌算法: (1)第一种可以简单描述成:随机抽牌,放在另一组;再次抽取,抽到空牌则重复抽。抽到空牌则重新抽的话,越到后面抽到空牌的几率就越大,所以显然是不合理的。我们可以进一步优化:拍抽走后,原牌变少,我原创 2017-05-08 16:42:23 · 685 阅读 · 0 评论 -
LeetCode: Remove Duplicates from Sorted Array II
Remove Duplicates from Sorted Array II Follow up for “Remove Duplicates”: What if duplicates are allowed at most twice?For example, Given sorted array nums = [1,1,1,2,2,3],Your function should ret原创 2017-05-09 09:50:26 · 190 阅读 · 0 评论 -
每天一个算法: 全排列算法
全排列算法:给出一个有n个元素的集合,求出这个集合所有可能的排列。 一、 递归的方法void permutation(char *arr, int k , int m){ if(k == m){ for(int i =0; i< m; i++){ cout<<arr[i]; //输出排列原创 2017-05-09 16:11:36 · 1465 阅读 · 0 评论 -
一天一个算法: O(n)回文串算法—Manacher算法
本文转自O(n)回文子串(Manacher)算法 问题描述:输入一个字符串,找出其中最大的回文子串,子串的含义是:在原串中连续出现的字符串片段。回文的含义是:正着看和倒着看相同,如abba和yyxyy。解析:这里介绍Manacher算法,算法的时间复杂度为O(n)。算法基本要点:首先用一个非常巧妙的方式,将所有可能的奇数/偶数长度的回文子串都转换成了奇数长度:在每个字符的两边都插入一个特殊的符号。转载 2017-05-10 15:09:54 · 248 阅读 · 0 评论 -
Leetcode: Longest Palindromic Substring
问题描述: 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 valid answer. Example原创 2017-05-22 08:15:27 · 209 阅读 · 0 评论 -
算法设计课作业证明题
题目:8.15 题目描述:证明求两个图的最大公共子图是NP完全问题。证明: 最大公共子图问题是给定两个图,要求去掉一些点后,两个图都得到一个节点数至少为b的子图,且两个子图完全相同。 首先假设最大公共子图存在且给出了子图的顶点是哪几个,那么可以在多项式时间内检验出这个解是否正确,所以最大公共子图问题是NP问题,接下来只需要证明它是NP难的,就可以证明它是NP完全问题。 我们已经知道求图的具有原创 2017-07-03 11:36:55 · 556 阅读 · 0 评论 -
大数乘法
大数乘法是一个经常会遇到的问题,在Java中这个问题很容易解决,直接用BigInteger就okl了。但是在C++、C中就不那么容易了,在做LeetCode过程中就遇到了这道题,第43题“Multiply Strings”:https://leetcode.com/problems/multiply-strings/#/description。 我在网上查了一下,也看了LeetCode上的discu原创 2017-07-17 21:09:04 · 317 阅读 · 0 评论