每日一练——
作者:~小明學編程??
文章專欄:每日一練——Java
格言:目之所及皆為回憶,心之所想皆為過往
目錄
反轉鏈表
題目
代碼
鏈表中間節點
題目
代碼
鏈表中倒數第k個結點
題目
代碼
反轉鏈表
鏈接:https://leetcode.cn/problems/reverse-linked-list/submissions/
題目
給你單鏈表的頭節點 head ,請你反轉鏈表,并返回反轉后的鏈表。
示例 1:
輸入:head = [1,2,3,4,5]
輸出:[5,4,3,2,1]
示例 2:
輸入:head = [1,2]
輸出:[2,1]
示例 3:
輸入:head = []
輸出:[]
?
提示:
鏈表中節點的數目范圍是 [0, 5000]
-5000 <= Node.val <= 5000
?
進階:鏈表可以選用迭代或遞歸方式完成反轉。你能否用兩種方法解決這道題?
代碼
/*** 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 prev = null;ListNode cur = head;ListNode curNext;while(cur!=null) {curNext = cur.next;cur.next = prev;prev = cur;cur = curNext;}return prev;} }鏈表中間節點
鏈接:https://leetcode.cn/problems/middle-of-the-linked-list/
題目
給定一個頭結點為 head?的非空單鏈表,返回鏈表的中間結點。
如果有兩個中間結點,則返回第二個中間結點。
示例 1:
輸入:[1,2,3,4,5]
輸出:此列表中的結點 3 (序列化形式:[3,4,5])
返回的結點值為 3 。 (測評系統對該結點序列化表述是 [3,4,5])。
注意,我們返回了一個 ListNode 類型的對象 ans,這樣:
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NULL.
示例?2:
輸入:[1,2,3,4,5,6]
輸出:此列表中的結點 4 (序列化形式:[4,5,6])
由于該列表有兩個中間結點,值分別為 3 和 4,我們返回第二個結點。
代碼
/*** 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 middleNode(ListNode head) {ListNode fast=head;ListNode slow=head;int n = 0;while(fast!=null&&fast.next!=null) {fast = fast.next.next;slow = slow.next;}}return slow;} } //返回中間的前一個節點 // class Solution { // public ListNode middleNode(ListNode head) { // ListNode fast=head; // ListNode slow=head; // while(fast.next!=null&&fast.next.next!=null) { // fast = fast.next.next; // slow = slow.next; // } // return slow; // } // }鏈表中倒數第k個結點
鏈接:https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13&&tqId=11167&rp=2&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking
題目
描述
輸入一個鏈表,輸出該鏈表中倒數第k個結點。
示例1
輸入:
1,{1,2,3,4,5}復制返回值:
{5}代碼
import java.util.*; /* public class ListNode {int val;ListNode next = null;ListNode(int val) {this.val = val;} }*/ public class Solution {public ListNode FindKthToTail(ListNode head,int k) {ListNode fast = head;ListNode slow = head;while(k!=0&&fast!=null) {fast = fast.next;k--;}if(fast==null&&k!=0) {return null;}while(fast!=null) {fast = fast.next;slow = slow.next;}return slow;} }總結
- 上一篇: 区块链项目的黑马——NGK超级公链
- 下一篇: 个人能力之提高沟通能力