算法
文章平均质量分 76
NFMSR
小白!!
展开
-
java实现排序算法之交换排序(冒泡排序和快速排序)
交换排序是指通过交换元素位置来实现算法的排序:最典型的就是冒泡排序和快速排序,下面分别讲解这两种算法的算法思想,稳定性,时空复杂度和java的实现代码原创 2017-02-18 22:56:40 · 2109 阅读 · 0 评论 -
java实现算法之KMP匹配算法(三个关键点掌握即可理解)
KMP算法在网上已经有很多详细解释的博客,这里我就不多解释其匹配过程了,只对我在学习KMP算法时遇到的一些关键点和难理解的地方做出解释。我觉得只要能看懂我要解释的这几点,kmp算法一定可以轻松的理解。最好是先了解了什么是kmp匹配算法,和next数组时干什么的之后,再来看这篇文章,有助于你更好的理解,和更容易编写出kmp匹配算法。原创 2017-03-13 11:38:11 · 1649 阅读 · 0 评论 -
java算法之Search for a Range
问题:Search for a RangeGiven an array of integers sorted in ascending order, find the starting and ending position of a given target value.Your algorithm's runtime complexity must be in the order of原创 2017-10-29 11:15:26 · 511 阅读 · 0 评论 -
java算法之Sqrt of x
问题:Sqrt(x)Implement int sqrt(int x).Compute and return the square root of x.思路:1.暴力求解,从最小遍历到x/2,然后看哪个数的平方,等于目标的值。2. 用二分查找法,寻找sqrtx的值。用第二种方法的巧妙之处就在于,可以把原数x看成一个从0到x的数组,然后用二分法,查找数组里面的某个值,原创 2017-10-29 15:20:05 · 378 阅读 · 0 评论 -
java算法之最大子阵列
问题:在一个数组中找出和最大的连续几个数。(至少包含一个数)例如:数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6.输入格式第一行输入一个不超过1000的整数n。第二行输入n个整数A[i]。输出格式第一行输出一个整数,表示最大的和。样例输入31 1 -2原创 2017-10-31 15:56:08 · 783 阅读 · 1 评论 -
Java实现算法之最大公共子序列
题目:一个字符串A的子序列被定义成从A中顺次选出若干个字符构成的序列。如A=“cdaad" ,顺次选1,3,5个字符就构成子序列" cad" ,现给定两个字符串,求它们的最长公共子序列。输入格式:第一行两个字符串用空格分开。输出格式:最长序列的长度。两个串的长度均小于2000样例输入abccd aecd样例输出3思路:原创 2017-11-12 14:51:31 · 746 阅读 · 0 评论 -
从硬币找零问题:看分治/动态规划/贪心算法的区别与联系
硬币找零问题:存在一堆面值为 v1、v2、v3 … 个单位的硬币,问最少需要多少个硬币才能找出总值为x单位的零钱?这里我们假设v[]={0, 1, 2, 5, 10, 20, 50}。0是用来充位数的,这样v1、v2与下标1、2对上。这里v1必须为1,若不为1的话,给定一个x,可能无法得到一个解,即找不开。比如v[]={2, 5, 10, 20, 50}, x=18,没有解。这里我们为了方便,也设转载 2017-10-15 21:41:05 · 4578 阅读 · 0 评论 -
Java实现算法之Brackets Sequence问题
Problem:DescriptionLet us define a regular brackets sequence in the following way:1. Empty sequence is a regular sequence.2. If S is a regular sequence, then (S) and [S] are both regular s原创 2017-11-17 23:01:03 · 443 阅读 · 0 评论 -
跳跃游戏(一,二)
题目:给定一个非负整数数组,假定你的初始位置为数组第一个下标。数组中的每个元素代表你在那个位置能够跳跃的最大长度。你的目标是到达最后一个下标,并且使用最少的跳跃次数。例如:A=[2,3,1,1,4]A = [2,3,1,1,4],到达最后一个下标的最少跳跃次数为22。(先跳跃111 步,从下标00 到11,然后跳3 步,到达最后一个下标。一共两次)输入格原创 2017-10-15 12:11:21 · 595 阅读 · 0 评论 -
java 位运算
之前学java感觉位运算都用不到,因此当时学的就很不认真,今天做算法题看到一个题,用位运算感觉很方便,以后做算法题也可以多个思路,因此今天总结一下位运算的相关操作:左移将5左移2位 System.out.println(5<<2);//运行结果是20 java中int 默认4字节 32 位 0000 0000 0000 0000 0000 0000 0000 0101 左移两个字节得原创 2017-10-14 23:36:28 · 342 阅读 · 0 评论 -
分治算法,动态规划,贪婪算法以及递归之间的区别与联系
最近愈加感觉算法的重要性,所以想要在近期把一起常用的算法思想回顾学习一下。。。感觉算法学了不少,但是总体上,大框架上一直没有搞清楚,今天看到一篇博客,感觉写的不错,有助于更好的理解这几个算法的之间的关系,也有利于之后的学习。在很多算法书中都是把贪婪选择即贪心算法排在第一个讲述,继而再讨论分治策略和动态规划。其实,分治策略才是最基础的,动态规划、贪婪选择可以说是建立在其基础上的(算法转载 2017-10-15 19:57:26 · 1123 阅读 · 0 评论 -
hash在算法中的应用
题目一:第一个没有出现的正数给定一个数组,从 11到nn,找出数组中第一个没出现的正数。例如:给定[1,2,0],则返回 33。给定[3,4,-1,1],则返回 22。注意:算法需要 O(n)\mathcal{O}(的时间复杂度以及线性的空间复杂度。输入格式第一行输入整数 n(n≤106)n(n \leq10^6),接下来一行输入数组A[n]。输出格原创 2017-10-21 19:46:30 · 570 阅读 · 0 评论 -
java实现排序算法之选择排序(简单选择排序和堆排序)
选择排序:就是一次从待排序列中选择一个最大元素或最小元素确定其最终位置,其中最常用的就是:简单选择排序和堆排序,下面分别讲解这两个算法:原创 2017-02-20 01:12:42 · 726 阅读 · 0 评论 -
java实现排序算法之插入排序(直接插入排序,折半插入排序,希尔排序)
插入排序:其基本思想就是每次将一个待排序的的记录,按其关键字大小插入到前面已经排好序的子序列中,直到全部记录插入完成,其主要的算法有:直接插入排序,折半插入排序,希尔排序,下面主要介绍这三个算法:原创 2017-02-19 00:46:48 · 456 阅读 · 0 评论 -
java实现排序算法之归并排序(2路归并)
java实现归并排序讲解原创 2017-02-20 23:47:05 · 3371 阅读 · 0 评论 -
位运算之技巧篇
1.判断奇偶只要根据最未位是0还是1来决定,为0就是偶数,为1就是奇数。因此可以用if ((a & 1) == 0)代替if (a % 2 == 0)来判断a是不是偶数。2.交换两数可以用位操作来实现交换两数而不用第三方变量: void Swap(int &a, int &b) { if (a != b)转载 2017-10-28 17:35:48 · 282 阅读 · 0 评论 -
java算法之灯的开关问题
灯的开关问题:初始状态,有100盏灯,都是亮的。第一轮,第1,2,3,4,5,6....100盏灯按一下开关。 1的倍数第二轮,第2,4,6,8,10......100盏灯按一下开关。 2的倍数第三轮,第3,6,9,12,15......99盏灯按一下开关。 3的倍数。。。。。第100轮,第100原创 2017-10-27 23:08:10 · 3360 阅读 · 0 评论 -
java算法实现之Sum of Two Integers
问题:Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.Example:Given a = 1 and b = 2, return 3.计算2个整数相加,不能使用'+','-'操作符。思路:不能用操作符进行+ - 操作,很容易想到用原创 2017-10-28 16:20:41 · 420 阅读 · 0 评论 -
java算法之数学问题(位操作)
数学问题:public static int flag(int n) { int count=0; while(n>0){ System.out.println(Integer.toBinaryString(n)); n=n&(n-1); count++; } return count; }问:flag(2017)结果,count为多少?思路:这个问原创 2017-10-27 22:12:36 · 501 阅读 · 0 评论 -
java实现算法之MajorityElement
Majority ElementDescription:Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array原创 2017-11-26 20:31:38 · 567 阅读 · 0 评论