LeetCode腾讯精选练习50——第十六天

题目237:删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。
题解:

class Solution:
    def deleteNode(self, node):
        """
        :type node: ListNode
        :rtype: void Do not return anything, modify node in-place instead.
        """
        # 原地删除链表节点,是该节点下一个值代替当前值
        node.val = node.next.val
        node.next = node.next.next

运行结果:
在这里插入图片描述
题目238:除自身以外数组的乘积
给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。
题解:

class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        n = len(nums)
        output = [0]*n
        output[0] = 1
        for i in range(1,n):
            output[i] = output[i-1]*nums[i-1]
        R=1
        for j in range(n-1,-1,-1):
            output[j] *=R
            R *= nums[j]
        return output

运行结果:
在这里插入图片描述
题目292:Nim游戏
你和你的朋友,两个人一起玩 Nim 游戏:
桌子上有一堆石头。
你们轮流进行自己的回合,你作为先手。
每一回合,轮到的人拿掉 1 - 3 块石头。
拿掉最后一块石头的人就是获胜者。
假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false 。
题解:

class Solution:
    def canWinNim(self, n: int) -> bool:
        # return n%4 != 0
        return bool(n%4)

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44315884/article/details/113135972