Java 算法篇-链表的经典算法:有序链表去重、合并多个有序链表

19 篇文章 18 订阅
订阅专栏

🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍
   

 

 

文章目录

          1.0 链表的说明

         2.0 有序链表去重的实现方式

        2.1 有序链表去重(保留重复的节点) - 使用递归来实现

        2.2 有序链表去重(保留重复的节点) - 使用双指针来实现

        2.3 有序链表去重(不保留重复的节点) - 使用递归来实现

        2.4 有序链表去重(不保留重复的节点) - 使用三指针来实现

        3.0 合并升序链表

        3.1 合并升序链表(两个链表) - 迭代法

        3.2 合并升序链表(两个链表) - 递归法

        3.3 合并多个升序链表

        4.0 实现有序链表去重、合并升序链表的完整代码


        1.0 链表的说明

        为了更好的讲解本篇当中的两种经典算法,先创建一个带哨兵的链表。链表是一种常见的数据结构,用于存储一系列元素。链表由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针

代码如下:

import java.util.Iterator;

public class List implements Iterable<Integer>{
    private  Node sentry;

    static class Node {
        public int value;
        public Node next;

        public Node(int value, Node next) {
            this.value = value;
            this.next = next;
        }
    }

    public List() {
        sentry = new Node(-1,null);
    }

    //头插节点
    public void addFirst(int value) {
        sentry.next = new Node(value,sentry.next);
    }

    //尾插节点
    public void addLast( int value) {
        Node temp = sentry;
        while (temp.next != null) {
            temp = temp.next;
        }
        temp.next = new Node(value,null);
    }

    //重写迭代器
    @Override
    public Iterator<Integer> iterator() {
        return new Iterator<Integer>() {
            Node p = sentry.next;
            @Override
            public boolean hasNext() {
                return p != null;
            }

            @Override
            public Integer next() {
                int value = p.value;
                p = p.next;
                return value;
            }
        };
    }

}

        简单讲解一下,创建了一个链表类,该类中包含一个静态内部类,即节点类,还实现了一个基本的方法:头插节点、尾插节点、重写了迭代器等等。

需要了解的小伙伴可以点击该链接 【Java 数据结构篇-实现单链表核心API-CSDN博客】

         2.0 有序链表去重的实现方式

        在此之前,需要分为两个方向:

        一、需要保留重复值的节点

        使用递归来实现有序链表的去重、使用双指针来实现有序链表的去重。

        二、不需要保留重复值的节点

        使用递归来实现有序链表的去重、使用三指针来实现有序链表的去重。

        2.1 有序链表去重(保留重复的节点) - 使用递归来实现

        具体思路:先来考虑终止递出的条件为:p == null 或者 p.next == null ,对于 p == null 情况,当该链表为空链表时,直接返回 null ,对于 p.next == null 情况,当递出到最后只剩一个时,也没有必要继续下去了,不会再有重复的值的节点了。再来考虑递出的具体过程:当 p.value == p.next.value 的情况,就该忽略该节点,则需要返回下一个节点;当 p.value != p.next.value 的情况,就需要返回该节点,但是在返回之前,需要对 p.next 该节点的指向进行重整

代码如下:

    //去重方法一(保留):递归
    public List removeRecursion(List list) {
        Node sentry1 = list.sentry;
        sentry = recursion1(sentry1);
        return list;
    }

    private Node recursion1(Node p) {

        if (p == null || p.next == null) {
            return p;
        }
        if (p.value == p.next.value) {
            return recursion1(p.next);
        }else {
            p.next = recursion1(p.next);
            return p;
        }

    }

        需要注意的是,先得判断链表对象是否为 null ,不然会空指针异常。

        2.2 有序链表去重(保留重复的节点) - 使用双指针来实现

        具体思路:定义两个指针 n1 与 n2 ,对于 n1 来说:n1 一开始指向头节点,假如指向哨兵节点时,那么后续就会掺入了哨兵节点的值来比较,因此,n1 一开始时需要指向头节点。对于 n2 来说,n2 = n1.next ,也就是 n2 在 n1 指向的节点的前一个节点。接下来:当 n1.value == n2.value 时,则将 n1.next = n2.next ;当 n1.value != n2.value 时,则 n1 = n1.next 。     

        循环的条件为:(n2 = n1.next) != null

代码如下:

    //去重方法二(保留):双指针
    public List removeDoublePointer(List list) {
        if (list == null) {
            return null;
        }

        //少于两个节点,不存在重复的值
        if (list.sentry.next == null || list.sentry.next.next == null) {
            return null;
        }

        Node n1 = list.sentry.next;
        Node n2;

        while ((n2 = n1.next) != null) {

            if (n2.value == n1.value) {
                n1.next = n2.next;
            }else {
                n1 = n1.next;
            }
        }

        return list;
    }

        需要注意的是,先得判断对象是否为 null ;还有一种情况,当节点少于两个时,不存在重复的值的节点。

        2.3 有序链表去重(不保留重复的节点) - 使用递归来实现

        具体思路:先来考虑递出的终止条件为:当 p == null 或者 p.next == null 的情况时,直接返回 p 该节点,因为当 p.next == null 时,不存在有两个重复值的节点,因此就没有必要再继续递归下去了。再来考虑递出的两种情况:当 p.value != p.next.value 时,没有重复,则返回当前节点 p ,但是在此之前,需要对 p.next 重新赋值,即重新调整 p.next 的指向;当 p.value == p.next.vaule 时,存在重复,则将该值的节点全部找出来,直到找到最后一个节点。循环的条件为: p.value == p.next.value ,循环结束后,得到的 p 就是最后一个重复值的节点,因为不需要这个节点,则返回下一个节点

代码如下:

    //去重方法一(不保留):递归
    public List removeRepeat(List list) {
        Node temp = list.sentry;
        sentry = recursion(temp);
        return list;
    }

    public Node recursion(Node p) {
        if (p == null || p.next == null) {
            return p;
        }

        if (p.value != p.next.value) {
            p.next = recursion(p.next);
            return p;
        }else {
            while (p.value == p.next.value) {
                p = p.next;
            }
            return recursion(p.next);
        }

    }

        同样的,也需要先判断该对象是否为 null ,否则容易报异常。

        2.4 有序链表去重(不保留重复的节点) - 使用三指针来实现

        具体思路:先定义三个指针,对于 p1 来说: 一开始时指向哨兵节点,假如不实现哨兵节点,则删除不了当链表中前几个为重复值的节点(比如:1->1->1->2->null) ,因此,需要实现哨兵来完成该需求对与 p2 来说:一开始时指向头节点,即 p1.next;对于 p3 来说:一开始时指向头节点的下一个节点,即 p2.next 。接下来,对于循环的两种过程来分析:当 p2.value == p3.value 时,需要接着找到两个节点的值不相等的时候,所以内层循环条件为:p2.value == p3.value 且 p3 != null,这里需要特别注意的是,千万不能丢了 p3 != null 的限制条件。跳出内层循环是,就可能意味着找到了,则将 p1.next = p3 ;当 p2.value != p3.value 时,直接 p1 = p1.next 即可。外层循环的条件为:((p2 = p1.next) != null 且 (p3 = p2.next) != null)

代码如下:

    //去重方法二(不保留):三指针
    public List removeThreePointer(List list) {

        if (list == null) {
            return null;
        }

        Node n1 = list.sentry;
        Node n2 ;
        Node n3 ;
        while ((n2 = n1.next) != null && (n3 = n2.next) != null) {
            if (n2.value == n3.value) {
                while (n3 != null && n2.value == n3.value) {
                    n3 = n3.next;
                }
                n1.next = n3;
            }else {
                n1 = n1.next;
            }
        }
        return list;
    }

        这里有个小技巧,对与 p2、p3 来说,不着急赋值,在判断条件的时候再进行赋值,可以简略代码量,提高可读性。

        3.0 合并升序链表

        分为两种情况:

        一、合并两个升序链表

        使用迭代法实现合并链表、使用递归实现合并链表

        二、合并多个升序链表

        合并多个升序链表就是一个个合并两个升序链表的情况,用递归来实现

        3.1 合并升序链表(两个链表) - 迭代法

        具体思路:对于两个链表合并来说,在各自的链表中分别定义一个指针,分别指向各自的头节点。合并一条新的链表,定义一个指针指向哨兵节点。

代码如下:

    //合并升序链表
    public static List combinedList(List l1,List l2) {
        if (l1 == null && l2 == null) {
            return null;
        } else if (l1 == null) {
            return l2;
        } else if (l2 == null) {
            return l1;
        }

        List newList = new List();
        Node node1 = l1.sentry.next;
        Node node2 = l2.sentry.next;
        Node p = newList.sentry;

        while (node1 != null && node2 != null) {

            if (node1.value < node2.value) {
                p.next = node1;
                node1 = node1.next;
            }else {
                p.next = node2;
                node2 = node2.next;
            }
            p = p.next;
        }

        if (node1 != null) {
            p.next = node1;
        }
        if (node2 != null) {
            p.next = node2;
        }
        return newList;
    }

        

        3.2 合并升序链表(两个链表) - 递归法

        具体思路:先来考虑递出的终止条件为:当 p1 == null 时,则直接返回 p2当 p2 == null 时,则直接返回 p1。再来考虑递出的过程:当 p1.value < p2.value 时,返回的节点为 p1 节点,在返回节点之前,需要将 p1.next 对该节点的重新调整指向下一个节点当 p1.value >= p2.value 时,返回的节点为 p2 节点,同理,在返回该节点之前,需要将 p2.next 对该节点的重新调整指向下一个节点

代码如下:

     private Node combineRecursion(Node p1, Node p2) {
        if (p1 == null) {
            return p2;
        } else if (p2 == null ) {
            return p1;
        }

        if (p1.value < p2.value) {
            p1.next = combineRecursion(p1.next,p2);
            return p1;
        }else {
            p2.next = combineRecursion(p1,p2.next);
            return p2;
        }

     }

        3.3 合并多个升序链表

        具体思路:这是一个多路递归,在每一次的递归过程中,都可以看成有两个升序链表进行来合并。

代码如下:

     //实现多个升序链表合并
    public List moreCombine(Node[] nodes) {
        List list = new List();
        list.sentry.next = moreCombineRecursion(nodes,0, nodes.length-1);
        return list;
    }

    private Node moreCombineRecursion(Node[] nodes,int i,int j) {

        if (j == 1) {
            return nodes[i];
        }
        int mid = (i + j) >>> 1;
        Node left = moreCombineRecursion(nodes,i,mid);
        Node right = moreCombineRecursion(nodes,mid+1,j);
        return combineRecursion(left,right);
    }

举例画图分析:

        对以上的流程图简单分析:注意的是结束递出的条件为:i == j 结束递出,开始回归。回归的是每一个链表的节点,最后集齐了两个链表,需要通过利用两个链表升序合并的返回进行合并,可以用迭代法或者递归法。这只是其中的一小部分,不过每一个过程都是一样的,就不多赘述了。

 

        4.0 实现有序链表去重、合并升序链表的完整代码

 

import java.util.Iterator;

public class List implements Iterable<Integer>{
    private  Node sentry;

    static class Node {
        public int value;
        public Node next;

        public Node(int value, Node next) {
            this.value = value;
            this.next = next;
        }
    }

    public List() {
        sentry = new Node(-1,null);
    }

    //头插节点
    public void addFirst(int value) {
        sentry.next = new Node(value,sentry.next);
    }

    //尾插节点
    public void addLast( int value) {
        Node temp = sentry;
        while (temp.next != null) {
            temp = temp.next;
        }
        temp.next = new Node(value,null);
    }

    //重写迭代器
    @Override
    public Iterator<Integer> iterator() {
        return new Iterator<Integer>() {
            Node p = sentry.next;
            @Override
            public boolean hasNext() {
                return p != null;
            }

            @Override
            public Integer next() {
                int value = p.value;
                p = p.next;
                return value;
            }
        };
    }

    //去重方法二(保留):双指针
    public List removeDoublePointer(List list) {
        if (list == null) {
            return null;
        }

        //少于两个节点,不存在重复的值
        if (list.sentry.next == null || list.sentry.next.next == null) {
            return null;
        }

        Node n1 = list.sentry.next;
        Node n2;

        while ((n2 = n1.next) != null) {

            if (n2.value == n1.value) {
                n1.next = n2.next;
            }else {
                n1 = n1.next;
            }
        }

        return list;
    }


    //去重方法一(保留):递归
    public List removeRecursion(List list) {
        Node sentry1 = list.sentry;
        sentry = recursion1(sentry1);
        return list;
    }

    private Node recursion1(Node p) {

        if (p == null || p.next == null) {
            return p;
        }
        if (p.value == p.next.value) {
            return recursion1(p.next);
        }else {
            p.next = recursion1(p.next);
            return p;
        }

    }



    //去重方法一(不保留):递归
    public List removeRepeat(List list) {
        Node temp = list.sentry;
        sentry = recursion(temp);
        return list;
    }

    public Node recursion(Node p) {
        if (p == null || p.next == null) {
            return p;
        }

        if (p.value != p.next.value) {
            p.next = recursion(p.next);
            return p;
        }else {
            while (p.value == p.next.value) {
                p = p.next;
            }
            return recursion(p.next);
        }

    }


    //去重方法二(不保留):三指针
    public List removeThreePointer(List list) {

        if (list == null) {
            return null;
        }

        Node n1 = list.sentry;
        Node n2 ;
        Node n3 ;
        while ((n2 = n1.next) != null && (n3 = n2.next) != null) {
            if (n2.value == n3.value) {
                while (n3 != null && n2.value == n3.value) {
                    n3 = n3.next;
                }
                n1.next = n3;
            }else {
                n1 = n1.next;
            }
        }
        return list;
    }


    //合并升序链表
    public static List combinedList(List l1,List l2) {
        if (l1 == null && l2 == null) {
            return null;
        } else if (l1 == null) {
            return l2;
        } else if (l2 == null) {
            return l1;
        }

        List newList = new List();
        Node node1 = l1.sentry.next;
        Node node2 = l2.sentry.next;
        Node p = newList.sentry;

        while (node1 != null && node2 != null) {

            if (node1.value < node2.value) {
                p.next = node1;
                node1 = node1.next;
            }else {
                p.next = node2;
                node2 = node2.next;
            }
            p = p.next;
        }

        if (node1 != null) {
            p.next = node1;
        }
        if (node2 != null) {
            p.next = node2;
        }
        return newList;
    }

    //合并链表:递归实现
    public List combineList(List list2) {
        List newList = new List();
        Node p1 = this.sentry.next;
        Node p2 = list2.sentry.next;
        Node p = combineRecursion(p1,p2);
        newList.sentry.next = p;
        return newList;
    }

     private Node combineRecursion(Node p1, Node p2) {
        if (p1 == null) {
            return p2;
        } else if (p2 == null ) {
            return p1;
        }

        if (p1.value < p2.value) {
            p1.next = combineRecursion(p1.next,p2);
            return p1;
        }else {
            p2.next = combineRecursion(p1,p2.next);
            return p2;
        }

     }

     //实现多个升序链表合并
    public List moreCombine(Node[] nodes) {
        List list = new List();
        list.sentry.next = moreCombineRecursion(nodes,0, nodes.length-1);
        return list;
    }

    private Node moreCombineRecursion(Node[] nodes,int i,int j) {

        if (j == i) {
            return nodes[i];
        }
        int mid = (i + j) >>> 1;
        Node left = moreCombineRecursion(nodes,i,mid);
        Node right = moreCombineRecursion(nodes,mid+1,j);
        return combineRecursion(left,right);
    }

}

         

java 实现有序链表
weixin_45632897的博客
08-22 541
java有序链表
JAVA 链表 去重_L2-002 链表去重 (25分)(java)
weixin_42601134的博客
02-13 323
给定一个带整数键值的链表L,你需要把其中绝对值重复的键值结点删掉。即对每个键值K,只有第一个绝对值等于K的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定L为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数N(≤,为结点总数)。一个结点的地址...
Java-有序链表去重(两种情况:留一个重复元素,将重复元素全部删除)
bjxxkjdxcdd的博客
11-11 1721
public static void main(String[] args){ remove(); } public static void remove() { int[] num = {1, 3, 3, 5, 6, 7, 9}; Node head = new Node(num[0]); Node pre =head; for (int i = 1;i< num.length;i++){
三、有序链表
最新发布
做个记录吧
08-02 225
算法实现中,经常会有需要每次取出最小(或最大)的数据,这时就需要有一个辅助的数据结构能够提供这个最小(或最大数据)。有序链表是实现最简单最方便的一个数据结构(堆会更好后面再做实现)。
链表去重Java
wfdfg的博客
10-09 242
去除链表中的重复元素为:ListNode{val=1, next=ListNode{val=2, next=ListNode{val=3, next=null}}}去除链表中的重复元素为:ListNode{val=1, next=ListNode{val=2, next=null}}
Java 实现有序链表
aodiyi6351的博客
06-17 179
有序链表: 按关键值排序。删除链头时,就删除最小(/最大)的值,插入时,搜索插入的位置。 插入时须要比較O(N),平均O(N/2),删除最小(/最大)的在链头的数据时效率为O(1), 假设一个应用须要频繁的存取(插入/查找/删除)最小(/最大)的数据项,那么有序链表是一个不错的选择 优先级队列 能够使用有序链表来实现 有序链表的插入排序: 对一个无序数组,用有序链表来...
Java算法-链表去重合并.pptx.pptx
12-18
**合并多个有序链表**: 这是一个典型的分治问题。首先,可以将多个链表两两合并成较短的链表,然后再次合并这些新链表,直至只剩下一个链表。具体步骤如下: 1. 初始化一个空的新链表。 2. 对于每个输入的有序链表...
Java算法练习-链表的分化练习题
10-07
java
Java算法设计-链表的回文结构练习题
10-08
java
Java算法练习-链表指定值清除练习题
10-08
java
Java算法练习-链表的k逆序练习题
10-07
java
数据结构 合并链表 并去除重复数据.
07-03
数据结构 合并链表 并去除重复数据. 将LLa,LLb链表合并后存入LLc升序,输出显示,最后再去除链表中重复数据去除重复数据
链表去重java
lianggege88的博客
05-19 2488
问题描述: 现有一个无序单链表,其中存在重复元素,实现一个算法来删除重复出现的元素,最终使得单链表中所有元素仅出现一次。 思路分析: 我们有两种思路: (1)利用hash表进行去重。 (2)利用双重循环去重。时间复杂度为O(N*N)。 具体见代码注释: package List; import java.util.HashSet; import java.util.Scanner; public class Removerepare { //链表删除重复元素 private static c
JAVA 链表 去重_链表去重
weixin_39633437的博客
02-13 184
问题:去掉链表中的重复结点?适用:链表有序,可以有多重这里定义三个指针,prev,p1,p2prev.next=p1;p1=head;p2=head.next;如果p1.val=p2.val,三个指针分别向后移一位。如果p1.val!=p2.val,p2后移,直到两者不相等为止。然后prev.next=p2;(判断prev是否为null)p1=p2;p2=p2.next;(判断p2是否为null)...
java链表去重,链表去重
weixin_30348079的博客
03-16 401
问题:去掉链表中的重复结点?适用:链表有序,可以有多重这里定义三个指针,prev,p1,p2prev.next=p1;p1=head;p2=head.next;如果p1.val=p2.val,三个指针分别向后移一位。如果p1.val!=p2.val,p2后移,直到两者不相等为止。然后prev.next=p2;(判断prev是否为null)p1=p2;p2=p2.next;(判断p2是否为null)...
JAVA 链表 去重_C语言数据结构实现链表去重的实例
weixin_33998219的博客
02-16 169
C语言数据结构实现链表去重的实例题目及分析链表去重时间限制300 ms内存限制65536 kB代码长度限制8000 B判题程序Standard给定一个带整数键值的单链表L,本题要求你编写程序,删除那些键值的绝对值有重复的结点。即对任意键值K,只有键值或其绝对值等于K的第一个结点可以被保留。同时,所有被删除的结点必须被保存在另外一个链表中。例如:另L为21→-15→-15→-7→15,则你必须输出去...
有序链表插入 java_Java 实现有序链表
weixin_39639518的博客
02-16 598
有序链表:按关键值排序。删除链头时,就删除最小(/最大)的值,插入时,搜索插入的位置。插入时须要比較O(N),平均O(N/2),删除最小(/最大)的在链头的数据时效率为O(1),假设一个应用须要频繁的存取(插入/查找/删除)最小(/最大)的数据项,那么有序链表是一个不错的选择优先级队列 能够使用有序链表来实现有序链表的插入排序:对一个无序数组,用有序链表来排序,比較的时间级还是O(N^2)复制时间...
L2-002 链表去重 - java
谢谢 啊sir的博客
04-06 1463
L2-002 链表去重 时间限制 400 ms 内存限制 64 MB 题目描述: 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21 → -15 → -15 → -7 → 15,你需要输出去重后的链表 21 → -15 → -7,还有被删除的链表 -15 → 15。 输入格式: 输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤10510^{5}105
Java算法链表合并去重算法
Zhangsama1的博客
01-20 553
链表算法
合并有序链表去重与高效算法实现
在"Java算法-链表去重合并.pptx.pptx"这份资料中,主要讨论了在Java编程中处理链表的一些核心问题,包括链表的基本操作、有序链表的特性和算法实现。 1. 链表的定义和基本操作: - 链表是线性数据结构,由节点...

Java领域优质创作者

129
原创
9214
点赞
8699
收藏
6938
粉丝
关注
私信
写文章

热门文章

  • MySQL 篇- Java 连接 MySQL 数据库并实现数据交互 16575
  • Java 数据结构篇-实现二叉搜索树的核心方法 16576
  • SpringBootWeb 篇-深入了解 Redis 五种类型命令与如何在 Java 中操作 Redis 15054
  • SpringBootWeb 篇-深入了解 SpringBoot + Vue 的前后端分离项目部署上线与 Nginx 配置文件结构 8126
  • Java 数据结构篇-深入了解排序算法(动态图 + 实现七种基本排序算法) 8069

分类专栏

  • Redis 篇 8篇
  • SpringBootWeb 篇 16篇
  • JavaEE 初级篇 23篇
  • Java 数据结构与算法篇 19篇
  • 笔试强训篇 1篇
  • 后端篇 1篇
  • 前端篇 8篇
  • MySQL 篇 7篇
  • Java LeetCode篇 7篇
  • Java SE篇 40篇

最新评论

  • Redis 篇- 实战项目中使用 Redis 实现经典功能(异步秒杀商品、点赞功能、共同关注的好友、投喂功能)

    gobeyye: 博主的文章细节很到位,兼顾实用性和可操作性,感谢博主的分享,文章思路清晰,干货满满,很有学习价值! 也欢迎您来逛逛我的博客哦

  • Redis 篇-初步了解 Redis 持久化、Redis 主从集群、Redis 哨兵集群、Redis 分片集群

    奶芙c: 博文作者真是一位出色的写手!这篇博文让我受益匪浅,语言简洁明了,逻辑严谨有序。作者不仅运用了丰富的例子和引文,为观点提供了充分的支持和验证,还以其独特的视角带给读者全新的思考。

  • Redis 篇-深入了解查询缓存与缓存所带来的问题(读写不一致、缓存穿透、缓存雪崩、缓存击穿)

    六点半888: 细节饱满内容丰富支持博主好文,支持博主

  • Redis 篇-初步了解 Redis 持久化、Redis 主从集群、Redis 哨兵集群、Redis 分片集群

    gobeyye: 文章内容丰富,涵盖了很多实用的知识点。论述清晰,案例生动形象,通俗易懂,让我深受启发,感谢博主的分享!

  • Redis 篇-初步了解 Redis 持久化、Redis 主从集群、Redis 哨兵集群、Redis 分片集群

    lvy-: 支持好文₍₍Ϡ(੭•̀ω•́)੭✧⃛

最新文章

  • Redis 篇-初步了解 Redis 持久化、Redis 主从集群、Redis 哨兵集群、Redis 分片集群
  • Redis 篇-深入了解使用 Redis 中的 GEO 数据结构实现查询附近店铺、BitMap 实现签到功能、HyperLogLog 实现 UV 流量统计
  • Redis 篇- 实战项目中使用 Redis 实现经典功能(异步秒杀商品、点赞功能、共同关注的好友、投喂功能)
2024
09月 7篇
08月 1篇
07月 1篇
06月 8篇
05月 10篇
04月 16篇
03月 19篇
02月 2篇
01月 4篇
2023年61篇

目录

目录

评论 102
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小扳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家舟山环保玻璃钢雕塑揭阳小区玻璃钢雕塑定做出口玻璃钢艺术雕塑玻璃钢雕塑套哪项定额红色玻璃钢卡通雕塑批发四川玻璃钢雕塑摆件销售平顶山商场美陈黄山人物玻璃钢雕塑销售厂家淮阴景观玻璃钢花盆划算的玻璃钢人物雕塑上海商场主题创意商业美陈服务玻璃钢瓜果雕塑售价云浮美陈玻璃钢雕塑银川大型玻璃钢雕塑安装玻璃钢雕塑漆施工玻璃钢人物雕塑品牌好济宁玻璃钢雕塑制作公司玻璃钢雕塑哪里有质量好海珠区公园玻璃钢人物雕塑南通商场商业美陈解决方案汕头玻璃钢雕塑造型韶关玻璃钢人物雕塑厂家供应福州景观玻璃钢雕塑优势遵义商场美陈制作玻璃钢踏浪飞马雕塑麻城玻璃钢头像雕塑杭州玻璃钢雕塑私人定做大型玻璃钢玩偶雕塑制作玻璃钢海洋雕塑哪家靠谱安宁玻璃钢雕塑产品厂家哪里好香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化