如何为朋友的卖网站业务找到合适的?
摘要:电脑 手机网站建站,我朋友是做卖网站的,提升网站响应时间,金华公司网站建设203.移除链表元素相关题目链接:力扣 - 移除链表元素题目重现给你一个链表的头节点 head 和一个整数 val &#
电脑 手机网站建站,我朋友是做卖网站的,提升网站响应时间,金华公司网站建设203.移除链表元素相关题目链接#xff1a;力扣 - 移除链表元素题目重现给你一个链表的头节点 head 和一个整数 val #xff0c;请你删除链表中所有满足 Node.val val 的节点#xff0c;并返回 新的头节点 。思路链表的删除操作如上图所示#xff0c;我们需要先找到要删除的…203.移除链表元素相关题目链接力扣 - 移除链表元素题目重现给你一个链表的头节点 head 和一个整数 val 请你删除链表中所有满足 Node.val val 的节点并返回 新的头节点 。思路链表的删除操作如上图所示我们需要先找到要删除的节点但是要注意在操作某一节点时我们必须要知道它的前一个节点。也就是说我们进行遍历当目前遍历到的节点的下一节点不为空且等于要删除的值时开始进行删除操作。在删除操作中我们也要注意其顺序。代码/*** 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 head1new ListNode(0);head1.nexthead;ListNode temp head1;while(temp.next!null){if(temp.next.valval){temp.nexttemp.next.next;}else{temptemp.next;}}return head1.next;}
}707.设计链表相关题目链接力扣 - 设计链表题目重现设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性val 和 next。val 是当前节点的值next 是指向下一个节点的指针/引用。如果要使用双向链表则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能get(index)获取链表中第 index 个节点的值。如果索引无效则返回-1。addAtHead(val)在链表的第一个元素之前添加一个值为 val 的节点。插入后新节点将成为链表的第一个节点。addAtTail(val)将值为 val 的节点追加到链表的最后一个元素。addAtIndex(index,val)在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度则该节点将附加到链表的末尾。如果 index 大于链表长度则不会插入节点。如果index小于0则在头部插入节点。deleteAtIndex(index)如果索引 index 有效则删除链表中的第 index 个节点。思路这道题目分为5个小函数所以我们针对这五个部分分别进行讲解。get(index)对于获取第index个节点的值很容易。遍历嘛~addAtHead(val)在链表的第一个元素前添加一个值为val的节点和后面addAtIndex(index,val)类似所以我们先写addAtIndex(index,val)。在第index个节点之前添加节点那么在第index个节点前添加节点的重要任务就是找到第index个节点的前一个节点这样才能操作第index个节点。使用的方法依旧是遍历。在第 index 个节点之前插入一个新节点例如index为0那么新插入的节点为链表的新头节点。如果 index 等于链表的长度则说明是新插入的节点为链表的尾结点如果 index 大于链表的长度则返回空至于删除某个节点如上一题的图中所示。代码class ListNode {int val;ListNode next;ListNode(){}ListNode(int val) {this.valval;}
}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 currentNode head;for (int i 0; i index; i) {currentNode currentNode.next;}return currentNode.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 pred head;for (int i 0; i index; i) {pred pred.next;}ListNode toAdd new ListNode(val);toAdd.next pred.next;pred.next toAdd;}public void deleteAtIndex(int index) {if (index 0 || index size) {return;}size--;if (index 0) {head head.next;return;}ListNode pred head;for (int i 0; i index ; i) {pred pred.next;}pred.next pred.next.next;}
}206.反转链表相关题目链接力扣 - 反转链表题目重现给你单链表的头节点 head 请你反转链表并返回反转后的链表。思路具体思路如图所示。要注意修改指向前要有修改节点的前一个节点存在。代码/*** 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) {ListNode currhead;ListNode prevnull;while(curr!null){ListNode nextcurr.next;curr.nextprev;prevcurr;currnext;}return prev;}
}24. 两两交换链表中的节点相关题目链接两两交换链表中的节点题目重现给你一个链表两两交换其中相邻的节点并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题即只能进行节点交换。思路本题思路如图所示。代码/*** 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 swapPairs(ListNode head) {ListNode pHeadnew ListNode(-1);pHead.nexthead;ListNode curpHead;while(cur.next!nullcur.next.next!null){ListNode tempcur.next;ListNode temp1cur.next.next.next;cur.nextcur.next.next;cur.next.nexttemp;temp.nexttemp1;curcur.next.next;}return pHead.next;}
}
