电子游戏 “辐射4” 中,任务“通向自由”要求玩家到达名为 “Freedom Trail Ring” 的金属表盘,并使用表盘拼写特定关键词才能开门。给定一个字符串 ring,表示刻在外环上的编码;给定另一个字符串 key,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。
LeetCode 516. Longest Palindromic Subsequence
LeetCode 25. Reverse Nodes in k-Group
题目描述
给定一个链表,每 k 个结点一组进行翻转,请你返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。
如果结点总数不是 k 的整数倍,那么请将最后剩余的结点保持原有顺序。
1 | 样例 |
说明
你的算法只能使用常数的额外空间。
你不能只是单纯的改变结点内部的值,而是需要实际进行结点交换。
算法
- 看代码即可
时间复杂度
仅遍历一遍所有结点,所以是 O(L)。
空间复杂度
仅使用常数的额外空间。
python code
1 | # Definition for singly-linked list. |
LeetCode 530 Minimum Absolute Difference in BST
LeetCode 525. Contiguous Array
LeetCode 532. 数组中的 k-diff 数对
LeetCode 538. Convert BST to Greater Tree
LeetCode 10. Regular Expression Matching
题目描述
给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。
1 | 样例 |
注意
您的解法仅能使用 O(logn)时间复杂度和 O(1) 空间复杂度。
算法
二分(左右指针)
python code
1 | class Solution: |
LeetCode 539. Minimum Time Difference
题目描述
给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并已分钟数表示。
1 | 样例 |
注意
列表大小在 220000 之间。23:59 之间。
每个时间取值在 00:00
算法
(排序) O(nlogn)
将原数组按照小时,分钟从小到大排序。
排序后,末尾再添加一个时间为最早的时间加24小时。
然后从第二个时间开始和前一个时间对比找最小值即可。
时间复杂度
排序后,仅需要线性扫描,故时间复杂度为 O(n)。
python code
1 | class Solution: |