LeetCode笔记:Weekly Contest 265
Posted 墨客无言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode笔记:Weekly Contest 265相关的知识,希望对你有一定的参考价值。
1. 题目一
给出题目一的试题链接如下:
1. 解题思路
这题直接按照题意进行解答就行了,没啥好多说的……
2. 代码实现
给出python代码实现如下:
class Solution:
def smallestEqual(self, nums: List[int]) -> int:
for i, x in enumerate(nums):
if i % 10 == x:
return i
return -1
提交代码评测得到:耗时84ms,占用内存14.3MB。
2. 题目二
给出题目二的试题链接如下:
1. 解题思路
这题我算是取巧了,本身的难点在于链表的单向性,不过我这边先将其转换成了list,从而绕过了单向性问题,由此问题就变得简单了。
后面的内容就不需要多做赘述了。
2. 代码实现
给出python代码实现如下:
class Solution:
def nodesBetweenCriticalPoints(self, head: Optional[ListNode]) -> List[int]:
vals = []
while head:
vals.append(head.val)
head = head.next
n = len(vals)
critics = [i for i in range(1, n-1) if (vals[i-1] < vals[i] and vals[i+1] < vals[i]) or (vals[i-1] > vals[i] and vals[i+1] > vals[i])]
m = len(critics)
if m < 2:
return [-1, -1]
return [min(critics[i+1] - critics[i] for i in range(m-1)), critics[-1]-critics[0]]
提交代码评测得到:耗时996ms,占用内存55.1MB。
3. 题目三
给出题目三的试题链接如下:
1. 解题思路
由于可行的变换总数也就是在1-1000这个范围内,因此,我们采用一种比较暴力的思路,即我们遍历所有变换可以得到的数据,取出得到他们所需的最小变换次数,这部分可以通过bfs进行实现。
而对于那些无法通过遍历得到的结果,我们直接返回-1即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def minimumOperations(self, nums: List[int], start: int, goal: int) -> int:
cache = {start: 0}
q = [start]
while q:
x = q.pop(0)
for k in nums:
if x + k == goal or x - k == goal or x ^ k == goal:
return cache[x] + 1
if 0 <= x+k <= 1000 and x + k not in cache:
cache[x+k] = cache[x] + 1
q.append(x+k)
if 0 <= x-k <= 1000 and x - k not in cache:
cache[x-k] = cache[x] + 1
q.append(x-k)
if 0 <= x^k <= 1000 and x ^ k not in cache:
cache[x^k] = cache[x] + 1
q.append(x^k)
return -1
提交代码评测得到:耗时1372ms,占用内存14.4MB。
4. 题目四
给出题目四的试题链接如下:
这一题同样没有啥好的思路,就先pass吧,后面有机会的话在看看好了……
以上是关于LeetCode笔记:Weekly Contest 265的主要内容,如果未能解决你的问题,请参考以下文章