算法序言

有一种观点认为,程序等于数据结构加算法,但是懂得了数据结构与算法并不一定能写出好的程序。本文主要介绍后面文章会用到的一些基本数据结构。

异常处理

后面统一使用如下异常类,处理抛出异常。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.lei.payment.java.base.algorithm.exception;

public class AlgorithmException extends RuntimeException {
private String message;

public AlgorithmException() {
super();
}

public AlgorithmException(String message) {
super(message);
this.message = message;
}
}

错误码定义类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.lei.payment.java.base.algorithm.exception;

public class ErrorCode4Algorithm {
private ErrorCode4Algorithm(){
}

/**
* 越界异常
*/
public static final String INDEX_OUT_OF_RANGE = "INDEX_OUT_OF_RANGE";

/**
* 未重写异常
*/
public static final String NOT_IMPLEMENT_EXCEPTION = "NOT_IMPLEMENT_EXCEPTION";
}

一维节点定义

所有一维单链表统一如下节点进行处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.lei.payment.java.base.algorithm.node;

import lombok.*;
import lombok.experimental.SuperBuilder;

/**
* 基本链表节点
*/
@Getter
@Setter
@ToString
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class ListNode<T> {
/**
* 当前节点值
*/
private T val;

/**
* 指向下一个节点的指针
*/
private ListNode next;
}