算法
文章平均质量分 84
大雄小方
想回到过去,试着让故事继续...
展开
-
可视化的快速排序(JAVA)
可视化的快速排序(JAVA)原创 2018-10-30 20:06:58 · 1245 阅读 · 0 评论 -
编程练习-求出数组逆序对
编程练习-求出数组逆序对思路:刚开始使用一个个遍历所有数对然后比较算出,时间复杂度为O(n^2);后来思考后发现可以基于归并排序来实现优化,归并排序可以在选出较大数字的过程,记录后半部分中小于前半部分某个数字的个数…代码如下:public class Main { private static int res = 0;//逆序对个数 public static void m...原创 2019-09-02 23:41:28 · 251 阅读 · 0 评论 -
编程练习-数据流中的中位数
编程练习-数据流中的中位数这里要注意的是数据流,而不是固定的数组,因此无法进行排序得出中位数,可以使用两个堆结构来实现,一个最大堆来存数据流中较小的数据,一个最小堆来存数据流中较大的数据,这样一来,中位数不是最大堆的堆顶数就是最小堆的堆顶数,要不就是两个堆顶和除以二。代码思路:java中的PriorityQueue是基于堆实现的,可以通过传入不同的比较器来实现最大堆和最小堆,这里的比较器Co...原创 2019-06-18 15:48:33 · 214 阅读 · 0 评论 -
编程练习-把数字翻译成字符串(递归)
编程练习-把数字翻译成字符串(递归)题目:给定一个数字,0翻译成‘a’,1翻译成‘b’…,25翻译成‘z’,比如12258可以翻译成’bccfi’、‘bwfi’、‘bczi’、‘mcfi’、‘mzi’五种,计算出一个数字有多少种不同翻译方法思路:基于递归:将当前一个数字作为整体f(i,i),将当前两个数字作为整体f(i,i+1)再判断符不符合要求,不断递归,累加最终符合的结果。f(0,0)...原创 2019-06-22 20:35:03 · 469 阅读 · 0 评论 -
编程练习-平衡二叉树
编程练习-平衡二叉树判断一棵树是否为平衡二叉树代码思路:首先先设计一个计算节点深度的函数,可以得出某个节点的左节点深度和右节点深度,来判断深度差是否超过1,如果用前序遍历,会导致重复计算,所以应该改用后序遍历,这里为了保存结果要初始化一个布尔全局变量代表是否为平衡树,在遍历过程中一旦出现不平衡的子节点,就设置为false。import java.util.*;public class S...原创 2019-06-19 20:58:05 · 290 阅读 · 0 评论 -
编程练习-复杂链表的复制
编程练习-复杂链表的复制题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。步骤:这里要分为三步:1、复制出所有节点,2、将节点的随机指针指向对应的节点,3、分离出新旧链表。这里有个小坑,注意当使用了连续next时要注意判断是否为null/*public class RandomLis...原创 2019-05-28 10:21:02 · 100 阅读 · 0 评论 -
重建二叉树-(递归)
重建二叉树-(递归)今天遇到一道比较难实现的题,参考别人的代码进行学习总结下…题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree ...原创 2019-05-25 21:11:01 · 327 阅读 · 0 评论 -
编程练习--二叉树和为某一值的路径
编程练习–二叉树和为某一值的路径import java.util.ArrayList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val;...原创 2019-05-15 22:48:18 · 96 阅读 · 0 评论 -
编程练习--回溯法
编程练习–回溯法回溯法,通过递归不断尝试,失败后返回到前一步继续尝试…矩阵中的路径public class Solution { private int rows; private int cols; private boolean[] visited; private int p; public boolean hasPath(char[] matr...原创 2019-05-24 14:55:58 · 385 阅读 · 0 评论 -
在数组中找出和为某值的数对
在数组中找出和为某值的数对题目要求:给定一个数组和一个数字,找出数组中所有和为数字的数对,并返回总个数。思路:1、直观的就是直接暴力遍历,找出所有数对然后判断是否符合,时间复杂度为O(n^2)2、将数组排序,然后通过两端夹击的方法,当和大于预期值,后面的数字下标向前移动一格,如果小于,则前面的数字下标向前移动一格…代码实现:import java.util.Arrays;publ...原创 2019-09-09 22:44:55 · 1030 阅读 · 0 评论