algorithm
Daz_M
努力做的更好
工欲善其事必先利其器
展开
-
归并排序实现(Java版)
归并排序的时间复杂度(O(n log n))要高于一般的排序算法,如冒泡等(O(n^2));具体实现如下:public class MergeSort { public static void main(String[] args) { int[] array = {6, 1, 7, 9, 4, 3, 5}; MergeSort sort = new MergeSort(); int[] temp = new int[array.length原创 2020-05-29 10:12:25 · 169 阅读 · 0 评论 -
检测链表中是否存在回环(Java 版)
检测链表中是否存在回环,这里介绍两种方法:快慢指针; HashSet 存储原理;1、快慢指针快慢指针检查,就是定义两个指针,一个走的快,一个走的慢,如果链表中存在回路,则快的指针最终会追上走的慢的;就如在学校圆形跑道上跑步,跑的快的人最后还是能和跑的慢的人遇上,但是如果在直道上跑步,就不会遇上;具体实现如下:public class Node { int value; Node next; Node(int val) { this.valu原创 2020-05-25 14:09:53 · 612 阅读 · 0 评论 -
二维数组逆时针输出(Java)
最近面试的时候,面试官让写一个算法,给定一个二维数组 arr[][],逆时针输出该数组说一说大概的思路,逆时针输出二维数组:即从最外圈开始,慢慢想内圈渗透; 一圈分为四个过程,分别完成这四个过程; 而后向内圈渗透,重复上述过程;话不多说,直接上代码,以下代码给出了核心处理逻辑: int row = arr.length; int col = arr[0].length; int circle = (col + 1) / 2;原创 2020-05-20 18:58:14 · 1410 阅读 · 0 评论 -
判断二叉树是不是镜像对称的(Java 版)
最近面试做了个算法题,判断二叉树是不是镜像对称的。理解一下镜像对称:就是从中间对折能完全重合且节点值相同;这里是用递归调用来实现的,话不多说,直接上代码,如下: /* * 定义一个树节点类 */ public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x;原创 2020-05-12 15:30:21 · 757 阅读 · 0 评论 -
先序遍历二叉树的两种方法(递归及非递归)
先序遍历就是按照 根节点 => 左子树 => 右子树 的顺序访问。其实:先序、中序、后序遍历,主要是对根节点读取顺序而言的。下面介绍下两种具体的遍历方法。1、首先先定义一个树节点类信息,如下:package com.dz.demo.algorithm;public class TreeNode { int val; TreeNode left...原创 2019-09-29 13:41:56 · 829 阅读 · 0 评论