LeetCode初级算法之链表:234.回文链表
题目信息
题目地址:https://leetcode-cn.com/problems/palindrome-linked-list/
请判断一个链表是否为回文链表。
示例 1:
输入: 1->2输出: false
示例 2:
输入: 1->2->2->1输出: true
进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?
解法一:数组比较容易想到的就是使用另一个容器存节点,再比较值,这里存到数组进行首尾比较。
1234567891011121314151617public boolean isPalindrome(ListNode head) { List<Integer> vals = new ArrayList(); // 将链表的值复制到数组中 ListNode cur = head; while (cur != null) { vals.add(cur.val); cur = cur.next; } // 使用双指针判断 ...
LeetCode初级算法之字符串:21.合并两个有序列表
题目信息
题目地址:https://leetcode-cn.com/problems/merge-two-sorted-lists/
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4输出:1->1->2->3->4->4
解法一:迭代两个链表两个指针不停的比较拼接新链表直到都遍历完成,每个迭代四个变动(三个指针以及cur指针的next)
1234567891011121314151617public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode head = new ListNode(0); ListNode cur = head; while (l1 != null && l2 != null) { if (l1.val <= l2.val) { c ...
LeetCode初级算法之链表:206.反转链表
题目信息
题目地址:https://leetcode-cn.com/problems/reverse-linked-list/submissions/
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
解法一:迭代反转一个链表和数组是不一样的,因为不能任意取值,只能说按照next的顺序依次往后放。那么把一个节点往后放的过程就是一次迭代
我们要迭代的有两个值,第一个不用说是当前节点cur每次迭代完它要换成原链表的下一个,第二个是转换过去的next,它是上一个当前节点。
1234567891011121314public ListNode reverseList(ListNode head) { ListNode cur = head; ListNode next = null; while( cur != null){ //记住原链表的 ...
忽然之间
《忽然之间》谱子收藏、全文查看
您的浏览器不支持视频标签
等你下课
《等你下课》谱子收藏、全文查看
您的浏览器不支持视频标签
LeetCode初级算法之链表:19.删除链表的倒数第N个节点
删除链表的倒数第N个节点
题目地址:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
12给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:给定的 n 保证是有效的。
进阶:你能尝试使用一趟扫描实现吗?
解法一:倒数转正数很自然的是我只能通过头节点head多次的next,找到要被删除的节点,但我们获取的定位是倒数第几个。直观的就是我们通过总长度减去倒数就是我们的next次数
1234567891011121314151617181920212223public ListNode removeNthFromEnd(ListNode head, int n){ // 1.统计链表长度 int count = 0; ListNode node = head; while(node ...
gitee(码云)图片丢失问题
gitee(码云)图片丢失之前申请了博客园想着美化一番,于是换了BNDong的Silence主题,首页搞了一些封面图片存储在gitee
但部分封面是显示不出来的并且提示是302重定向。
恰好在看这个的时候gitee我已经登陆了因此拿这个地址是可以访问到图片的,因此放着没有解决直到今天早上,直接访问提示302图片的地址发现提示大小超过1M的文件需要登陆才能访问然后跳到gitee的登录页。这就是为什么博客封面302的原因(资源存在但重定向)
解决方式无论是gitee还是github它都提供了一个静态对外访问的接口,需要的仓库开启服务中的Gitee Pages。使用它生成的服务地址再去访问仓库下对应文件的路径https://用户名.gitee.io/仓库名/文件路径但文件路径不能有中文,原始数据的访问方式可以有中文,但这个是不能的
LeetCode初级算法之链表:237.删除链表中的节点
删除链表中的节点
题目地址:https://leetcode-cn.com/problems/delete-node-in-a-linked-list/
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。
现有一个链表 – head = [4,5,1,9],它可以表示为:
示例 1:
输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
示例 2:
输入:head = [4,5,1,9], node = 1输出:[4,5,9]解释:给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.
提示:
链表至少包含两个节点。
链表中所有节点的值都是唯一的。
给定的节点为非末尾节点并且一定是链表中的一个有效节点。
不要从你的函数中返回任何结果。
题解作为合集中链表下的第一题,确实是较 ...


