zoukankan      html  css  js  c++  java
  • LeetCode--[链表]--不定时更新

    1._237_删除链表中的节点

    1.1链接

    https://leetcode-cn.com/problems/delete-node-in-a-linked-list/

    1.2题目描述

     1.3代码实现

    package 链表;
    
    /**
     * https://leetcode-cn.com/problems/delete-node-in-a-linked-list/
     * @author MJ Lee
     *
     */
    public class _237_删除链表中的节点 {
        
        public void deleteNode(ListNode node) {
            node.val = node.next.val;
            node.next = node.next.next;
        }
    }
    View Code

    2._206_反转链表

    2.1链接

    https://leetcode-cn.com/problems/reverse-linked-list/

    2.2题目描述

    2.3解决思路

     

    2.3.1递归方式

    代码实现

     java版本

        public ListNode reverseList(ListNode head) {
            if (head == null || head.next == null) return head;
        
            ListNode newHead = reverseList(head.next);
            head.next.next = head;
            head.next = null;
            return newHead;
        }
    View Code

     python版本

    class Node(object):
        def __init__(self, value=None, next=None):
            self.value = value
            self.next = next
    ###递归方式
    def reverse2(head):
         if head.next == None:  # 递归停止的基线条件
              return head
         new_head = reverse2(head.next)
         head.next.next = head    # 当前层函数的head节点的后续节点指向当前head节点
         head.next = None    # 当前head节点指向None
         return new_head
    
    
    link = Node(1, Node(2, Node(3, Node(4, Node(5, Node(6, Node(7, Node(8, Node(9)))))))))
    root = reverse2(link)
    while root:
            print(root.value)
            root =root.next
    View Code

    2.3.2非递归方式

    代码实现 

    java版本

    public ListNode reverseList2(ListNode head) {
            if (head == null || head.next == null) return head;
        
            ListNode newHead = null;
            while (head != null) {
                //tmp的作用临时变了 保存变量值 防止节点引用断裂 从而被gc误删
                ListNode tmp = head.next;
                head.next = newHead;
                newHead = head;
                head = tmp;
            }
            
            return newHead;
        }
    View Code

     python版本

    class Node(object):
        def __init__(self, value=None, next=None):
            self.value = value
            self.next = next
    ###循环方式
    def reverse(head):
        cur_node = head  # 当前节点
        new_link = None  # 表示反转后的链表
        while cur_node != None:
            tmp = cur_node.next  # cur_node后续节点传递给中间变量
            cur_node.next = new_link    # cur_node指向new_link
            new_link = cur_node    # 反转链表更新,cur_node为新的头结点
            cur_node = tmp    # 原链表节点后移一位
        return new_link
    link = Node(1, Node(2, Node(3, Node(4, Node(5, Node(6, Node(7, Node(8, Node(9)))))))))
    root = reverse2(link)
    while root:
            print(root.value)
            root =root.next
    View Code

    3._141_环形链表

    3.1链接

    https://leetcode-cn.com/problems/linked-list-cycle/

    3.2题目描述

    3.3解决思路

    快慢指针

     

     

    3.4代码实现

    java版本

    public class _141_环形链表 {
        
        public boolean hasCycle(ListNode head) {
            if (head == null || head.next == null) return false;
            
            ListNode slow = head;
            ListNode fast = head.next;
            while (fast != null && fast.next != null) {
                slow = slow.next;
                fast = fast.next.next;
                
                if (slow == fast) return true;
            }
            
            return false;
        }
        
    }
    View Code

    4.约瑟夫问题

    4.1链接

    https://blog.csdn.net/weixin_38214171/article/details/80352921?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

    4.2题目描述

     

    4.3解决思路

    用循环链表解决

    4.4代码实现

    java版本

    static void josephus() {
            CircleLinkedList<Integer> list = new CircleLinkedList<>();
            for (int i = 1; i <= 8; i++) {
                list.add(i);
            }
            
            // 指向头结点(指向1)
            list.reset();
            
            while (!list.isEmpty()) {
                list.next();
                list.next();
                System.out.println(list.remove());
            }
        }
    View Code

    X._XXX_

    x.1链接

    x.2题目描述

    x.3解决思路

    x.4代码实现

    java版本

    X._XXX_

    x.1链接

    x.2题目描述

    x.3解决思路

    x.4代码实现

    java版本

    X._XXX_

    x.1链接

    x.2题目描述

    x.3解决思路

    x.4代码实现

    java版本

    X._XXX_

    x.1链接

    x.2题目描述

    x.3解决思路

    x.4代码实现

    java版本

    X._XXX_

    x.1链接

    x.2题目描述

    x.3解决思路

    x.4代码实现

    java版本

    X._XXX_

    x.1链接

    x.2题目描述

    x.3解决思路

    x.4代码实现

    java版本

    X._XXX_

    x.1链接

    x.2题目描述

    x.3解决思路

    x.4代码实现

    java版本

    X._XXX_

    x.1链接

    x.2题目描述

    x.3解决思路

    x.4代码实现

    java版本

    X._XXX_

    x.1链接

    x.2题目描述

    x.3解决思路

    x.4代码实现

    java版本

    X._XXX_

    x.1链接

    x.2题目描述

    x.3解决思路

    x.4代码实现

    java版本

    X._XXX_

    x.1链接

    x.2题目描述

    x.3解决思路

    x.4代码实现

    java版本

        public boolean hasCycle(ListNode head) {
            if (head == null || head.next == null) return false;
            
            ListNode slow = head;
            ListNode fast = head.next;
            while (fast != null && fast.next != null) {
                slow = slow.next;
                fast = fast.next.next;
                
                if (slow == fast) return true;
            }
            
            return false;
        }
    View Code
  • 相关阅读:
    卡特兰数
    hdu 1023 Train Problem II
    hdu 1022 Train Problem
    hdu 1021 Fibonacci Again 找规律
    java大数模板
    gcd
    object dection资源
    Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
    softmax sigmoid
    凸优化
  • 原文地址:https://www.cnblogs.com/ggnbnb/p/12166005.html
Copyright © 2011-2022 走看看