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的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode笔记:Weekly Contest 317

LeetCode笔记:Weekly Contest 288

LeetCode笔记:Weekly Contest 299

LeetCode笔记:Weekly Contest 307

LeetCode笔记:Weekly Contest 325

LeetCode笔记:Weekly Contest 314