refactor(interview): 重命名ccn包为zhaoyun包
将'cn.whaifree.interview.ccn'包重命名为'cn.whaifree.interview.zhaoyun',以反映新的命名约定。c2.java和p2.java文件中的包声明已更新。 feat(redo): 添加LeetCode718和LeetCode1143题目解决方案 新增'LeetCode718'和'LeetCode1143'两个类,分别提供'最长公共子数组'和'最长公共子序列'问题的解决方案。包括单元测试和算法实现。
This commit is contained in:
parent
63ca326724
commit
ad890c9d8a
@ -0,0 +1,109 @@
|
|||||||
|
package cn.whaifree.designPattern.ChainPattern;
|
||||||
|
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* <a href="https://kamacoder.com/problempage.php?pid=1100">...</a>
|
||||||
|
*
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/9/12 23:37
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class ChainPattern {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class Main{
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Audit.Builder builder = new Audit.Builder();
|
||||||
|
AbstractAudit build = builder.setAudit(new Supervisor())
|
||||||
|
.setAudit(new Manager())
|
||||||
|
.setAudit(new Director())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
|
||||||
|
Scanner scanner = new Scanner(System.in);
|
||||||
|
int i = scanner.nextInt();
|
||||||
|
for (int j = 0; j < i; j++) {
|
||||||
|
build.process(scanner.next(), scanner.nextInt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Audit{
|
||||||
|
void process(String name,int day);
|
||||||
|
|
||||||
|
public static class Builder{
|
||||||
|
AbstractAudit head;
|
||||||
|
|
||||||
|
public Builder setAudit(AbstractAudit audit) {
|
||||||
|
if (head == null) {
|
||||||
|
head = audit;
|
||||||
|
}else {
|
||||||
|
AbstractAudit index = head;
|
||||||
|
index.setNext(audit);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AbstractAudit build(){
|
||||||
|
return head;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Setter
|
||||||
|
abstract class AbstractAudit implements Audit{
|
||||||
|
Audit next;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class Supervisor extends AbstractAudit {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(String name,int day) {
|
||||||
|
if (day <= 3) {
|
||||||
|
System.out.println(name + " Approved by Supervisor");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.next.process(name, day);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Manager extends AbstractAudit {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(String name,int day) {
|
||||||
|
if (day > 3 && day <= 7) {
|
||||||
|
System.out.println(name + " Approved by Manager");
|
||||||
|
}else {
|
||||||
|
this.next.process(name, day);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Director extends AbstractAudit {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(String name,int day) {
|
||||||
|
if (day<=10&&day > 7) {
|
||||||
|
System.out.println(name + " Approved by Director");
|
||||||
|
}else {
|
||||||
|
System.out.println(name + " Denied by Director.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,16 +1,144 @@
|
|||||||
package cn.whaifree.leetCode.LinkedList;
|
package cn.whaifree.leetCode.LinkedList;
|
||||||
|
|
||||||
import cn.whaifree.leetCode.model.TreeNode;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
public class LCR155 {
|
public class LCR155 {
|
||||||
|
|
||||||
// https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/description/
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
new Thread(() -> {
|
||||||
|
List<byte[]> list = new ArrayList<byte[]>();
|
||||||
|
while (true) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
|
||||||
|
// 线程二
|
||||||
|
new Thread(() -> {
|
||||||
|
while (true) {
|
||||||
|
System.out.println(new Date().toString() + Thread.currentThread() + "==");
|
||||||
|
try {
|
||||||
|
Thread.sleep(100);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/description/
|
||||||
|
static class Node {
|
||||||
|
public int val;
|
||||||
|
public Node left;
|
||||||
|
public Node right;
|
||||||
|
|
||||||
|
public Node() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public Node(int _val) {
|
||||||
|
val = _val;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Node(int _val, Node _left, Node _right) {
|
||||||
|
val = _val;
|
||||||
|
left = _left;
|
||||||
|
right = _right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
Node node1 = new Node(4);
|
||||||
|
node1.left = new Node(2);
|
||||||
|
node1.right = new Node(5);
|
||||||
|
node1.left.left = new Node(1);
|
||||||
|
node1.left.right = new Node(3);
|
||||||
|
Node node = new Solution1().treeToDoublyList(node1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
class Solution {
|
class Solution {
|
||||||
|
|
||||||
|
public Node treeToDoublyList(Node root) {
|
||||||
|
|
||||||
public TreeNode treeToDoublyList(TreeNode root) {
|
if (root == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (root.left == null && root.right == null) {
|
||||||
|
root.right = root;
|
||||||
|
root.left = root;
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
List<Node> nodes = new ArrayList<>();
|
||||||
|
Deque<Node> deque = new LinkedList<>();
|
||||||
|
deque.add(root);
|
||||||
|
while (!deque.isEmpty()) {
|
||||||
|
Node pop = deque.pop();
|
||||||
|
if (pop != null) {
|
||||||
|
if (pop.right != null) {
|
||||||
|
deque.push(pop.right);
|
||||||
|
}
|
||||||
|
deque.push(pop);
|
||||||
|
deque.push(null);
|
||||||
|
if (pop.left != null) {
|
||||||
|
deque.push(pop.left);
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
nodes.add(deque.pop());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Node head = new Node(Integer.MAX_VALUE);
|
||||||
|
Node index = head;
|
||||||
|
for (int i = 0; i < nodes.size() - 1; i++) {
|
||||||
|
Node node = nodes.get(i);
|
||||||
|
index.right = node;
|
||||||
|
node.left = index;
|
||||||
|
index = index.right;
|
||||||
|
}
|
||||||
|
Node node = nodes.get(nodes.size() - 1);
|
||||||
|
index.right = node;
|
||||||
|
node.left = index;
|
||||||
|
node.right = head.right;
|
||||||
|
head.right.left = node;
|
||||||
|
|
||||||
|
|
||||||
|
return head.right;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class Solution1 {
|
||||||
|
|
||||||
|
Node pre;
|
||||||
|
Node index;
|
||||||
|
public Node treeToDoublyList(Node root) {
|
||||||
|
pre = new Node(-1);
|
||||||
|
index = pre;
|
||||||
|
in(root);
|
||||||
|
index.right = pre.right;
|
||||||
|
pre.right.left = index;
|
||||||
|
return pre.right;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void in(Node root) {
|
||||||
|
if (root == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
in(root.left);
|
||||||
|
index.right = root;
|
||||||
|
root.left = index;
|
||||||
|
index = index.right;
|
||||||
|
|
||||||
|
in(root.right);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user