Python每日一练(20230226)

news2024/11/14 4:09:46

1. 合并列表中字典字段

如下两个列表,需要将oldList转化为newList,去掉相同字段的字典,并且去掉的参数里面的值要相加

oldList = [{'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1972}, {'3-3': 203, '3-2': 0, '3-1': 0, '3-0': 0}, {'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1450}, {'3-3': 203, '3-2': 0, '3-1': 0, '3-0': 0}, {'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1334}] newList = [{'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 4756}, {'3-3': 406, '3-2': 0, '3-1': 0, '3-0': 0}]

以下代码 A、B、C、D四选一:

==【A】================================================================================
import operator
oldList = [{'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1972},
           {'3-3': 203, '3-2': 0, '3-1': 0, '3-0': 0},
           {'0//0': 0, '0//1': 0, '0//2': 0, '0//3': 1450},
           {'3-3': 203, '3-2': 0, '3-1': 0, '3-0': 0},
           {'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1334}]
newList = []
newList.append(oldList[0])
for t in range(1,len(oldList)):
    for li in newList:
        if operator.eq(li.keys(), oldList[t].keys()):
            for key in li.keys():
                li[key] += oldList[t][key]
            break
        elif operator.eq(li,newList[-1]):
            newList.append(oldList[t])
            break
print(newList)

==【B】================================================================================
import operator
oldList = [{'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1972},
           {'3-3': 203, '3-2': 0, '3-1': 0, '3-0': 0},
           {'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1450},
           {'3-3': 203, '3-2': 0, '3-1': 0, '3-0': 0},
           {'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1334}]
newList = []
newList.append(oldList[0])
for t in range(1,len(oldList)):
    for li in newList:
        if operator.eq(li.keys(), oldList[t].keys()):
            for key in li.keys():
                li[key] += oldList[t][key]
            break
        elif operator.eq(li,newList[-1]):
            newList.append(oldList[t])
            break
print(newList)

==【C】================================================================================
import operator
oldList = [{'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1972},
           {'3-3': 203, '3-2': 0, '3-1': 0, '3-0': 0},
           {'0*0': 0, '0*1': 0, '0*2': 0, '0*3': 1450},
           {'3-3': 203, '3-2': 0, '3-1': 0, '3-0': 0},
           {'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1334}]
newList = []
newList.append(oldList[0])
for t in range(1,len(oldList)):
    for li in newList:
        if operator.eq(li.keys(), oldList[t].keys()):
            for key in li.keys():
                li[key] += oldList[t][key]
            break
        elif operator.eq(li,newList[-1]):
            newList.append(oldList[t])
            break
print(newList)

==【D】================================================================================
import operator
oldList = [{'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1972},
           {'3-3': 203, '3-2': 0, '3-1': 0, '3-0': 0},
           {'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1450},
           {'3-3': 203, '3-2': 0, '3-1': 0, '3-0': 0},
           {'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1334}]
newList = []
newList.append(oldList[0])
for t in range(1,len(oldList)):
    for li in newList:
        if operator.eq(li.keys(), oldList[t].keys()):
            for key in li.keys():
                li[key] += oldList[t][key]
            continue
        elif operator.eq(li,newList[-1]):
            newList.append(oldList[t])
            break
print(newList)

2. 乘积最大子数组

给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。

示例 1:

输入: [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。

示例 2:

输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。

以下代码 A、B、C、D四选一:

==【A】================================================================================
class Solution:
    def maxProduct(self, nums: List[int]) -> int:
        if len(nums) == 0:
            return 0
        length = len(nums)
        dp = [[0] * 2 for _ in range(length)]
        dp[0][0] = nums[0]
        dp[0][1] = nums[0]
        for i in range(1, length):
            if nums[i] > 0:
                dp[i][0] = min(nums[i], dp[i - 1][0] * nums[i])
                dp[i][1] = max(nums[i], dp[i - 1][1] * nums[i])
            else:
                dp[i][0] = min(nums[i], dp[i - 1][1] * nums[i])
                dp[i][1] = max(nums[i], dp[i - 1][0] * nums[i])
        res = dp[0][1]
        for i in range(1, length):
            res = max(res, dp[i][1])
        return res

==【B】================================================================================
class Solution:
    def maxProduct(self, nums: List[int]) -> int:
        if len(nums) == 0:
            return 0
        length = len(nums)
        dp = [[0] * 2 for _ in range(length)]
        dp[0][0] = nums[0]
        dp[0][1] = nums[0]
        for i in range(1, length):
            if nums[i] >= 0:
                dp[i][0] = min(nums[i], dp[i - 1][0] * nums[i])
                dp[i][1] = max(nums[i], dp[i - 1][1] * nums[i])
            else:
                dp[i][0] = min(nums[i], dp[i - 1][1] * nums[i])
                dp[i][1] = max(nums[i], dp[i - 1][0] * nums[i])
        res = dp[0][1]
        for i in range(1, length):
            res = max(res, dp[i][1])
        return res

==【C】================================================================================
class Solution:
    def maxProduct(self, nums: List[int]) -> int:
        if len(nums) == 0:
            return 0
        length = len(nums)
        dp = [[0] * 2 for _ in range(length)]
        dp[0][0] = nums[0]
        dp[0][1] = nums[0]
        for i in range(1, length):
            if nums[i] > 0:
                dp[i][0] = min(nums[i], dp[i - 1][0] * nums[i])
                dp[i][1] = max(nums[i], dp[i / 1][1] * nums[i])
            else:
                dp[i][0] = min(nums[i], dp[i - 1][1] * nums[i])
                dp[i][1] = max(nums[i], dp[i - 1][0] * nums[i])
        res = dp[0][1]
        for i in range(1, length):
            res = max(res, dp[i][1])
        return res

==【D】================================================================================
class Solution:
    def maxProduct(self, nums: List[int]) -> int:
        if len(nums) == 0:
            return 0
        length = len(nums)
        dp = [[0] * 2 for _ in range(length)]
        dp[0][0] = nums[0]
        dp[0][1] = nums[0]
        for i in range(1, length):
            if nums[i] > 0:
                dp[i][0] = min(nums[i], dp[i - 1][0] * nums[i])
                dp[i][1] = max(nums[i], dp[i - 1][1] * nums[i])
            else:
                dp[i][0] = min(nums[i], dp[i - 1][1] * nums[i])
                dp[i][1] = max(nums[i], dp[i // 1][0] * nums[i])
        res = dp[0][1]
        for i in range(1, length):
            res = max(res, dp[i][1])
        return res

3. 加油站

在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。

你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。

如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。

说明: 

  • 如果题目有解,该答案即为唯一答案。
  • 输入数组均为非空数组,且长度相同。
  • 输入数组中的元素均为非负数。

示例 1:

输入: 
gas  = [1,2,3,4,5]
cost = [3,4,5,1,2]
输出: 3

解释: 从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油 开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油 开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油 开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油 开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油 开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。 因此,3 可为起始索引。

示例 2:

输入: 
gas  = [2,3,4]
cost = [3,4,3]
输出: -1

解释: 你不能从 0 号或 1 号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。 我们从 2 号加油站出发,可以获得 4 升汽油。 此时油箱有 = 0 + 4 = 4 升汽油 开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油 开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油 你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。 因此,无论怎样,你都不可能绕环路行驶一周。

以下代码 A、B、C、D四选一: 

==【A】================================================================================
class Solution(object):
    def canCompleteCircuit(self, gas, cost):
        """
        :type gas: List[int]
        :type cost: List[int]
        :rtype: int
        """
        n = len(gas)
        if sum(gas) < sum(cost):
            return -1
        else:
            start = 0
            path = 0
            for i in range(n):
                path = path + (gas[i] - cost[i])
                if path < 0:
                    start = i + 1
                    path = 0
            return start

==【B】================================================================================
class Solution(object):
    def canCompleteCircuit(self, gas, cost):
        """
        :type gas: List[int]
        :type cost: List[int]
        :rtype: int
        """
        n = len(gas)
        if sum(gas) < sum(cost):
            return *1
        else:
            start = 0
            path = 0
            for i in range(n):
                path = path + (gas[i] - cost[i])
                if path < 0:
                    start = i + 1
                    path = 0
            return start

==【C】================================================================================
class Solution(object):
    def canCompleteCircuit(self, gas, cost):
        """
        :type gas: List[int]
        :type cost: List[int]
        :rtype: int
        """
        n = len(gas)
        if sum(gas) < sum(cost):
            return -1
        else:
            start = 0
            path = 0
            for i in range(n):
                path = path + (gas[i] // cost[i])
                if path < 0:
                    start = i + 1
                    path = 0
            return start

==【D】================================================================================
class Solution(object):
    def canCompleteCircuit(self, gas, cost):
        """
        :type gas: List[int]
        :type cost: List[int]
        :rtype: int
        """
        n = len(gas)
        if sum(gas) < sum(cost):
            return -1
        else:
            start = 0
            path = 0
            for i in range(n):
                path = path - (gas[i] - cost[i])
                if path < 0:
                    start = i + 1
                    path = 0
            return start

今天外出徒步,晚上回家放答案!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/372778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git ---- IDEA集成 GitHub

Git ---- IDEA集成 GitHub1. 设置 GitHub 账号2. 分享工程到 GitHub3. push 推送本地库到远程库4. pull 拉取远程库到本地库5. clone 克隆远程库到本地1. 设置 GitHub 账号 新版的 IDEA 选择之后会自动登录&#xff0c;就不需要设置 token 了。 如果是老版的 IDEA 的话&…

随想录二刷Day06——链表

文章目录链表6. 删除链表的倒数第 N 个结点7. 链表相交8. 环形链表 II链表 6. 删除链表的倒数第 N 个结点 19. 删除链表的倒数第 N 个结点 思路&#xff1a; 用双指针的方法&#xff0c;fast 和 slow 之间保持距离为 n&#xff0c;只需要遍历一次即可完成删除任务。 为了方便…

操作系统笔记-第一章

文章目录操作系统概述1. 操作系统的概念1.1 操作系统的地位1.2 操作系统的作用1.3 操作系统的定义2. 操作系统的历史2.1 操作系统的产生2.1.1 手动操作阶段&#xff08;20世纪40年代&#xff09;2.1.2 批处理阶段&#xff08;20世纪50年代&#xff09;2.1.3 执行系统阶段&#…

aws console 使用fargate部署aws服务快速跳转前端搜索栏

测试过程中需要在大量资源之间跳转&#xff0c;频繁的点击不如直接搜索来的快&#xff0c;于是写了一个搜索框方便跳转。 前端的静态页面可以通过s3静态网站托管实现&#xff0c;但是由于中国区需要备案的原因&#xff0c;可以使用ecs fargate部署 步骤如下&#xff1a; 编写…

Springboot打包成jar发布

打包的方式 打包成jar包打包成war包 区别&#xff1a;jar包内置了tomcat、netty等服务器&#xff0c;更改只需要修改pom.xml的坐标即可&#xff0c;war不内置服务器&#xff0c;需要上传到服务器tomcat解压后运行 如何打包&#xff1f; 打包成jar&#xff0c;pom.xml中设置打…

Linux基础命令-df显示磁盘的使用情况

文章目录 文章目录 df 命令介绍 语法格式 基本参数 参考实例 1&#xff09;以人类可读形式显示磁盘空间的使用情况 2&#xff09;显示磁盘的inode信息 3&#xff09;显示磁盘和文件系统类型 4&#xff09;指定显示文件系统 5&#xff09;显示所有磁盘空间中的内容 …

C++11多线程编程 三:锁资源管理和条件变量

C11多线程编程 一&#xff1a;多线程概述 C11多线程编程 二&#xff1a;多线程通信&#xff0c;同步&#xff0c;锁 C11多线程编程 三&#xff1a;锁资源管理和条件变量 3.1 手动实现RAii管理mutex资源锁自动释放 自己写的代码一般都是自己上锁&#xff0c;自己进行释放&…

【fly-iot飞翔物联】(2):如何从0打造自己的物联网平台,使用开源的技术栈搭建一个高性能的物联网平台,目前在设计阶段。

目录前言1&#xff0c;fly-iot飞翔物联2&#xff0c;mqtt-broker 服务3, 管理后台产品/设备设计4,数据存储目前使用mysql&#xff0c;消息存储到influxdb中5,规则引擎使用 ekuiper6, 总结和其他的想法前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details…

3-2 创建一个至少有两个PV组成的大小为20G的名为testvg的VG

文章目录1. 在vmware添加多块20G的硬盘&#xff0c;并创建分区2. 创建一个至少有两个PV组成的大小为20G的名为testvg的VG&#xff0c;要求PE大小为16M&#xff0c;而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录3. 新建用户archlinux,要求其家目录为/users/archlinu…

华为OD机试题,用 Java 解【字符串变换最小字符串】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…

合规要点解析:如何正确的使用隐私增强技术

开放隐私计算开放隐私计算开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神&#xff0c;专注于隐私计算行业的研究与布道。社区致力于隐私计算技术的传播&#xff0c;愿成为中国 “隐私计算最后一公里的服务区”。183篇原创内容公众号G…

名创优品第二季度财报预测:收入和利润都将大幅下降

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 名创优品2023财年第二季度财务业绩预测 名创优品(MNSO) 将于2月28日公布2023会计年度第二季度(2022年9月30日至12月31日)财务业绩。 卖方分析师认为&#xff0c;名创优品2023财年第二季度的财务业绩将不如2023财年第一季度。…

前端常考react面试题(持续更新中)

react diff 算法 我们知道React会维护两个虚拟DOM&#xff0c;那么是如何来比较&#xff0c;如何来判断&#xff0c;做出最优的解呢&#xff1f;这就用到了diff算法 diff算法的作用 计算出Virtual DOM中真正变化的部分&#xff0c;并只针对该部分进行原生DOM操作&#xff0c;而…

Axure8设计—动态仪表盘

本次分享的的案例是Axure8制作的动态仪表盘,根据设置的数值&#xff0c;仪表盘指针旋转到相应的值位置 预览地址&#xff1a;https://2qiuwg.axshare.com 下载地址&#xff1a;https://download.csdn.net/download/weixin_43516258/87502161 一、制作原型 1、首先创建空白页…

JavaWeb中异步交互的关键——Ajax

文章目录1,Ajax 概述1.1 作用1.2 同步和异步1.3 案例1.3.1 分析1.3.2 后端实现1.3.3 前端实现2&#xff0c;axios2.1 基本使用2.2 快速入门2.2.1 后端实现2.2.2 前端实现2.3 请求方法别名3&#xff0c;JSON3.1 概述3.2 JSON 基础语法3.2.1 定义格式3.2.2 代码演示3.2.3 发送异步…

【蓝桥杯每日一题】双指针算法

&#x1f34e; 博客主页&#xff1a;&#x1f319;披星戴月的贾维斯 &#x1f34e; 欢迎关注&#xff1a;&#x1f44d;点赞&#x1f343;收藏&#x1f525;留言 &#x1f347;系列专栏&#xff1a;&#x1f319; 蓝桥杯 &#x1f319;我与杀戮之中绽放&#xff0c;亦如黎明的花…

电子科技大学数据库与软件工程实验报告一

适用于网络工程和物联网专业&#xff08;信通学院&#xff09; 实验报告格式和内容如下&#xff08;仅供参考&#xff0c;具体还需要自己理解&#xff09; 本实验有一个陷阱****&#xff1a;安装Centos系统的时候&#xff0c;分配区的大小的时候一定要默认&#xff0c;不能自己…

Maven的下载和安装【详细】

文章目录一、什么是Maven&#xff1f;二、Maven的安装与配置2.1下载Maven安装包2.2配置Maven环境变量2.3验证三、Idea配置Maven3.1配置 setting.xml文件3.2Idea配置Maven一、什么是Maven&#xff1f; Apache Maven是个项目管理和自动构建工具&#xff0c;基于项目对象模型&…

【力扣周赛#334】6369. 左右元素和的差值 + 6368. 找出字符串的可整除数组 + 6367. 求出最多标记下标

目录 6369. 左右元素和的差值 - 前缀后缀和 ac 6368. 找出字符串的可整除数组 - 操作余数ac 6367. 求出最多标记下标 - 二分答案 贪心 6369. 左右元素和的差值 - 前缀后缀和 ac class Solution {public int[] leftRigthDifference(int[] nums) {int nnums.length;int[] re…

开发同事辞职,接手到垃圾代码怎么办?

小王新加入了一家公司&#xff0c;这家公司有点年头&#xff0c;所以连屎山都是发酵过的&#xff0c;味道很冲。和大多数时运不济的程序员一样&#xff0c;到了这种公司&#xff0c;做的大多数工作&#xff0c;就是修补这些祖传代码&#xff0c;为其添砖加瓦。每当被折腾的筋疲…