LeetCode高频面试60天打卡日记Day02
2020-03-08 13:31
1036 查看
Day02
非递归 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode reverseList(ListNode head) { if(head == null || head.next==null) return head; ListNode curNode = head.next; ListNode preNode = head; preNode.next = null; ListNode curNext; while(curNode!=null){ curNext = curNode.next; curNode.next = preNode; preNode = curNode; curNode = curNext; } return preNode; } } 时间复杂度:O(n),假设 nn 是列表的长度,时间复杂度是 O(n)。 空间复杂度:O(1)。
递归方法:
//1->2->3->4->5:递归执行完向下走的时候,第一次的p指向5,head指向4,head.next是5,当执行head.next.next=head时,p.next指向4,当执行head.next=null时,断开head的4到5的节点完成一次反转,以此类推 public ListNode reverseList(ListNode head){ if(head==null || head.next==null){ return head; } ListNode p = reverseList(head.next); head.next.next = head; head.next = null; return p; } 时间复杂度:O(n),假设 nn 是列表的长度,那么时间复杂度为 O(n)。 空间复杂度:O(n),由于使用递归,将会使用隐式栈空间。递归深度可能会达到 n层。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- LeetCode高频面试60天打卡日记Day06
- LeetCode高频面试60天打卡日记Day05
- LeetCode高频面试60天打卡日记Day04
- LeetCode高频面试60天打卡日记Day03
- 【LeetCode-面试算法经典-Java实现】【063-Unique Paths II(唯一路径问题II)】
- 【LeetCode-面试算法经典-Java实现】【066-Plus One(加一)】
- leetcode:Restore IP Addresses (修复ip地址) 【面试算法题】
- leetcode刷题日记——Majority Element
- LeetCode面试算法-力扣 121. 买卖股票的最佳时机
- leetcode 打卡 2018.03.06 #766 Toepliz Matrix
- 【LeetCode-面试算法经典-Java实现】【142-Linked List Cycle II(单链表中有环II)】
- 2018.03.07 leetcode 打卡 #169. Majority Element
- Java面试中最高频的那20%知识点你会多少?
- leetcode 刷题记录(高频算法面试题汇总)--合并两个有序数组
- Leetcode做题日记:21. 合并两个有序链表(PYTHON)
- 2018.03.09 leetcode 打卡 #pivotIndex
- 【LeetCode-面试算法经典-Java实现】【171-Excel Sheet Column Number(Excel表行号)】
- leetcode 刷题记录(高频算法面试题汇总)--两个数组的交集 i & ii
- 2018.3.12 leetcode打卡 #66 plus one
- leetcode:Palindrome Number (判断数字是否回文串) 【面试算法题】