首页 > 编程语言 >代码随想录算法训练营第三天| 203.移除链表元素 707.设计链表 206.反转链表

代码随想录算法训练营第三天| 203.移除链表元素 707.设计链表 206.反转链表

时间:2022-11-21 16:59:38浏览次数:38  
标签:head ListNode val int 随想录 next 链表 移除 curr

203.移除链表

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode removeElements(ListNode head, int val) {
        
       ListNode dummyHead = new ListNode();
        dummyHead.next=head;
        ListNode curr = dummyHead;
        while(curr.next != null){
            if(curr.next.val == val){
                curr.next = curr.next.next;
            }else{
                curr=curr.next;
            }
        }
        return dummyHead.next;
    }
}
 

707.设计链表

class ListNode {
    int val;
    ListNode next;
    public ListNode(int val) {
        this.val = val;
    }

    public ListNode() {
    }
}

class MyLinkedList {
    int size;
    ListNode head;

    public MyLinkedList() {
        size = 0;
        head = new ListNode(0);
    }
    
     public int get(int index) {
        if (index < 0 || index >= size) return -1;
        ListNode curr = head;
        for (int i = 0; i <= index ; i++) {
            curr = curr.next;
        }
        return curr.val;
    }
    
    public void addAtHead(int val) {
        addAtIndex(0, val);

    }
    
    public void addAtTail(int val) {
        addAtIndex(size, val);
    }
    
    public void addAtIndex(int index, int val) {
        if(index > size){
            return;
        }
        
        if(index<0){
            index = 0;
        }
        size++;
        ListNode curr = head;
        for (int i = 0; i < index; i++) {
            curr = curr.next;
        }
        ListNode newNode = new ListNode(val);
        newNode.next = curr.next;
        curr.next = newNode;
    }
    
    public void deleteAtIndex(int index) {
        if (index < 0 || index >= size) {
            return;
        }
        size--;
        if(index == 0){
            head = head.next;
            return;
        }

        ListNode curr = head;
        for (int i = 0; i < index ; i++) {
            curr =curr.next;
        }

        curr.next=curr.next.next;
    }
}

/**
 * Your MyLinkedList object will be instantiated and called as such:
 * MyLinkedList obj = new MyLinkedList();
 * int param_1 = obj.get(index);
 * obj.addAtHead(val);
 * obj.addAtTail(val);
 * obj.addAtIndex(index,val);
 * obj.deleteAtIndex(index);
 */

206.反转链表

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
if(head == null){
            return null;
        }
        if(head.next == null){
            return head;
        }
        ListNode pre = null, cur = head,tmp;
        while(cur != null){
            tmp = cur.next;
            cur.next = pre;
            pre = cur;
            cur = tmp;
        }
        return pre;
    }
}

标签:head,ListNode,val,int,随想录,next,链表,移除,curr
From: https://www.cnblogs.com/Chain-Tian/p/16911881.html

相关文章

  • 有序单链表的合并
    有序单链表的合并将带表头的有序单链表La和Lb合并成Lc:structnode*merge(structnode*La,structnode*Lb){structnode*pa,*pb,*pc; //声明三个指针 pa=......
  • Java双向链表实现队列
    将双向链表做简单的改造,即可实现一个FIFO(FirstInputFirstOut)队列,该队列只在头节点出队,尾节点入队。一般来说定义节点类只需一个后驱节点next即可。这里保留pre节......
  • 代码随想录算法训练营第三天|203.移除链表元素 707.设计链表 206.反转链表
     今日任务●链表理论基础●203.移除链表元素●707.设计链表●206.反转链表链表理论基础建议:了解一下链接基础,以及链表和数组的区别文章链接:https......
  • Java实现双向循环链表
    上一篇文章实现了单向循环链表,双向很简单,在单向循环链表的基础上加一个前驱指针,节点类如下:/***双向链表节点*/publicclassNode{privateintdata;//数据......
  • 代码随想录第四十一天|动态规划
    今天是四十一天,从今天起难度大概就要上来了 343.整数拆分classSolution{publicintintegerBreak(intn){int[]dp=newint[n+1];dp[2]......
  • 解决WPF中DataGrid移除选中项后报错的问题
    1、问题描述DataGrid列表中添加删除按钮,点击后执行下述操作:ModelList.Remove(item);这时候会有XAML绑定失败错误:严重性计数数据上下文绑定路径目标......
  • stl: rope(块状链表)
    今天比赛中看到的一个挺简单的东西,除了常数大,别的都挺好的#include<ext/rope>//头文件usingnamespace__gnu_cxx;//注意名称空间rope<int>rp;intmain(){......
  • 力扣142 环形链表
    题目:给定一个链表的头节点head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在......
  • 代码随想录刷题营day1|704.二分查找 34. 有序数组找首位末位 35.搜索插入的位置 27.移
    一、数组理论基础数组下标都是从0开始的数组内存空间的地址是连续的数组的元素是不能删的,只能覆盖二、刷题第一题704.二分查找题目链接:https://leetcode.com/prob......
  • 代码随想录第三十九天|动态规划
    今天是第三十九天,只有两道动态规划的题 62.不同路径 classSolution{publicintuniquePaths(intm,intn){int[][]path=newint[m][n];......