算法
文章平均质量分 68
苏格拉没有底q
这个作者很懒,什么都没留下…
展开
-
冒泡排序——c++实现
C++实现冒泡算法#冒泡的算法介绍以升序排列为例来说,大的数字不断向后排,就像煮沸的水中的气泡一直往上升一样。冒泡算法它是通过不断比较相邻两数的大小来将最大的数字排列到最后的。例如 4 2 3 14和1相比,4大就和2交换位置变成2 4 3 1、j++4和3比较,4大就和3交换位置变成 2 3 4 1j++4和1比较,4大就和1交换位置变成2 3 1 4j++此时i=0...原创 2019-05-17 19:39:04 · 166 阅读 · 0 评论 -
求最大子矩阵的大小
maxArea调用了maxRecFormBoottom函数,就是下面所介绍的public static int maxRecSize(int [][]map) { if(map==null||map.length==0||map[0].length==0) { return 0; } int maxArea=0; int [] height=new int[...原创 2019-07-15 19:52:58 · 494 阅读 · 0 评论 -
单调栈玩法---烽火台
具体问题是:n 个 烽火台围成一个圈,任意两个烽火台只要中间的烽火台比他们两个都低就能看见彼此,当然相邻的肯定能看见对面,求能看见彼此的对数。我们第一步就是找出这一圈数值中的最大值。为什么?因为这样我们就能确保后面的数向左至少和最大值能配成一对烽火台,我们只要观察右边的即可。public static long communications(int [] arr) { if(a...原创 2019-07-16 20:44:43 · 416 阅读 · 1 评论 -
输出大楼轮廓线问题
分析一下:public static class Node{ public boolean isUp;//记录是向上还是向下 public int posi;//记录位置 public int h;//记录高度 public Node(boolean bORe,int position,int height) //布尔值true为上,false为下 { ...原创 2019-08-01 09:29:19 · 232 阅读 · 0 评论 -
连续子序列求和的最大值
输入一个整数序列(浮点数序列也适合本处讲的算法),求出其中连续子序列求和的最大值。public static int maxLength(int []arr,int k) { if(arr==null||arr.length==0) { return 0; } HashMap<Integer,Integer>map=new HashMap<Integ...原创 2019-08-01 21:27:42 · 692 阅读 · 0 评论 -
给定数组求最大异或和
题意:给定一个数组,找出其中最大异或和。这个异或和可能是0~i的,也可能是j到i的当然我们可以用双层循环的方式,得出每一个0到i-1的异或和,和每一个j到i-1的异或和。这和冒泡排序的结构差不多,但是复杂度就是O(n2)。先抛出一些结论:条件: E1^E2=E3结论:E1^E3=E2 ,E2^E3=E1我们就利用【0到i-1的异或和】(异或)【0到j-1的异或和】=【j到i-1的异或和...原创 2019-08-11 09:28:44 · 1453 阅读 · 0 评论 -
简述比较器
如何使用比较器public static class 名字 implements Comparator<被排序的类>{ public int compare(类 o1 , 类 o2){ return 负数; // 第一个数应该放在前面 return 整数; // 第二个数应该放在前面 return 0; //两个东西一样大 }}Arrays.sort(类 ,...原创 2019-09-11 22:39:32 · 139 阅读 · 0 评论