dtcms文档 循环 random tcp ros 打印 pyqt vuejs 教程 郑州网站开发 sql数据库教学视频 mysql自连接 less比较级 less的比较级 idea开发python mysql建表主键自增长 docker导入镜像 svn安装后右键不显示 python输出函数 python中的join函数 eclipse安装python java编程课程 java8的新特性 java中正则表达式 java入门学习 java开发学习 java接口的实例 java异常处理 java获取文件 java数据类型转换 linux格式化命令 网站数据分析工具 微信助力软件 adobe清理工具 raid0教程 java语言程序设计 iar下载 tableau下载 iframe跨域 免费微信答题制作 win10wifi pr书写效果
当前位置: 首页 > 学习教程  > 编程语言

编程实践笔记No.16

2021/1/28 23:00:28 文章标签:

编程实践笔记No.16题目一237 删除链表中的节点代码题目二 238 除自身以外数组的乘积代码题目三 292 Nim 游戏思路代码写在最前面,编程一直是我的短板,希望在leetcode练习中获得进步!参考Datawhale组队学习中“LeetCodeTencent” 题目一237 删…

编程实践笔记No.16

  • 题目一237 删除链表中的节点
    • 代码
  • 题目二 238 除自身以外数组的乘积
    • 代码
  • 题目三 292 Nim 游戏
    • 思路
    • 代码

写在最前面,编程一直是我的短板,希望在leetcode练习中获得进步!

参考Datawhale组队学习中“LeetCodeTencent”

题目一237 删除链表中的节点

链接

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。

代码

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

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]:
        length = len(nums)
        
        # L 和 R 分别表示左右两侧的乘积列表
        L, R, answer = [0]*length, [0]*length, [0]*length
        
        # L[i] 为索引 i 左侧所有元素的乘积
        # 对于索引为 '0' 的元素,因为左侧没有元素,所以 L[0] = 1
        L[0] = 1
        for i in range(1, length):
            L[i] = nums[i - 1] * L[i - 1]
        
        # R[i] 为索引 i 右侧所有元素的乘积
        # 对于索引为 'length-1' 的元素,因为右侧没有元素,所以 R[length-1] = 1
        R[length - 1] = 1
        for i in reversed(range(length - 1)):
            R[i] = nums[i + 1] * R[i + 1]

        # 对于索引 i,除 nums[i] 之外其余各元素的乘积就是左侧所有元素的乘积乘以右侧所有元素的乘积
        for i in range(length):
            answer[i] = L[i] * R[i]
        
        return answer



在这里插入图片描述

链接

题目三 292 Nim 游戏

链接

你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。
你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头

思路

[1,3]先手赢
[4]后手赢
[5,7]先手赢,因为你可以使到对方回合时是剩下4个石子
[8]后手赢,此时对方可以使在你的回合时剩下4个石子
以次类推可以发现当n为4的倍数时先手总会输

代码

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

在这里插入图片描述


本文链接: http://www.dtmao.cc/news_show_650134.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?