目录

  • 1. 最大子序和(变体)
  • 2. 矩阵求乘积最大
  • 3. 逐渐平均——值最大

目前已更新:第一题,第二题,第四题

1. 最大子序和(变体)

题目描述:

首先考虑常规的最大子序和的问题,即不能去掉中间的一段,leetcode上有一个这样 的题目:

leetcode——最大子序和题解

分析如下:

考虑数组中某一位置的元素nums[i],如果nums[i] + (i 前面若干个连续数组成的累计和) > nums[i] ,则表示加上nums[i] 之后会组成更大的子序和,我们就把相加值赋给nums[i] ,反之,则不动nums[i]的值,这之后的nums[i]表示:从前往后遍历,到i 这个位置时的最大子序和(注意:nums[i] 必须在包含里面,表示包含nums[i]的最大子序和,而不是nums[:i+1]的最大子序和)。参考下图:

而我们这个问题有个附加条件:可以去掉中间的一段。

假如我们随便去掉中间的一段,则数组被分成两段(数组1,数组2):

最大子序和 = 数组1从前往后遍历的最大子序和 + 数组2从后往前遍历的最大子序和

这里有一个问题就是如果数组1最大子序和不是出现在数组1最后的位置,还等价吗?其实是等价的,相当于多去掉一段,并不影响结果。因此,代码可以写成:

class Solution:def maxSubArray(self, nums: List[int]) -> int:nums = [0] + nums # 加一个0是为了防止全负数的情况,这种情况下则不包含任何元素,子序和为0nums1 = nums[:]nums1.reverse()   # 复制一份,并反转数组n = len(nums)for i in range(1,n):nums[i] = max(nums[i],nums[i-1]+nums[i])      # 从前往后的最大子序和nums1[i] = max(nums1[i],nums1[i-1]+nums1[i])  # 从后往前的最大子序和# 遍历数组,找最大值max_ = 0for i in range(n-1):for j in range(0, n-i-1):max_ = max(max_, nums[i]+nums1[j])print(nums,nums1)return max_

2. 矩阵求乘积最大

题目描述:

这一题可以简化,以其中的两行为例:

  • 若第一行的最大值的序号与第二行的最大值的序号互异,则这两行乘积的最大值为两行分别的最大值相乘

  • 若第一行的最大值得序号与第二行的最大值的序号相等,说明某一行的最大值的序号与另一行的第二大值得序号必互异,则乘积最大值在某一行的最大值与另一行的第二大的值的乘积当中(共有两个,取最大的)

代码如下:

nums = [[1,2,3,4], [5,6,7,8], [9,10,11,12]]
n = len(nums)
m = len(nums[0])
target = []for i in range(n):tmp = [[-float("inf"), -1], [-float("inf"), -1]]   # 存储当前行的最大值,第二大的值以及他们各自的序号for j in range(m):if nums[i][j] > tmp[0][0]:tmp[1] = tmp[0][:]tmp[0][0] = nums[i][j]tmp[0][1] = jtarget.append(tmp)max_ = -float("inf")
for i in range(n):for j in range(i+1,n):if target[i][0][1] != target[j][0][1]: # 如果最大值两个序号不相等,则这两行的最大值是两行各自最大值的乘积max_ = max(target[i][0][0]*target[j][0][0], max_)else:  # 反之则说明这两行中某一行的最大值的序号和另一行的第二大的值的序号是互异的max_ = max(target[i][0][0]*target[j][1][0], target[i][1][0]*target[j][0][0], max_)print(max_)

3. 逐渐平均——值最大

题目描述:

这题思路很简单:

  • 首先要明确一点,最先加入的数被除的次数最多,比如第一个数,他就相当于除以了2^(n-1),每次除,这个数都会减少一半。基于这个思想,我们要做到的是,要让最大的数尽量少被除,因此我们可以先排序,然后一遍遍历就可以解决。

代码如下:

nums = [4,5,2,6,1,7,5,9]nums.sort()
target = round(nums[0],4)
for i in range(1,len(nums)):target = round((target + nums[i])/2, 4)print(target)

转载于:https://www.cnblogs.com/anzhengyu/p/11228550.html

2019招商银行M-Geeker线上比赛题解析相关推荐

  1. 第十六届全国大学生智能车竞赛线上比赛-赛前开题

    简 介: 为了保证参加智能车竞赛线上比赛队伍所设计的赛道符合比赛标准,便于对赛道进行检查以及比赛时便于进行计分.本文给出了比赛前所有队伍进行赛前开题-也就是赛道审核的要求. 关键词: 智能车竞赛,赛道 ...

  2. 第十六届智能车竞赛总决赛线上比赛赛道设计

    简 介: 根据2021年第十六届全国大学生智能汽车竞赛组委会商议确定使用线上比赛的方式完成比赛的后半程,全国总决赛.这种方式与以前的线上比赛相比具有相同性,也有其特殊性.需要在线上比赛的赛道设计以及比 ...

  3. 第十六届全国大学生智能车竞赛线上比赛(广东+西南科技大学)成绩排名与获奖信息

    §01 成绩与奖项   下面是第十六届全国大学生智能车竞赛线上比赛成绩与奖项设置.线上比赛的队伍包括有 广东省参赛队 与 西南科技大学 .   线上比赛奖项设置比例如下: 一等奖:参赛队伍20% 二等 ...

  4. 第十六届智能车竞赛广东省线上比赛成绩汇总

    简 介: 第十六届全国大学生智能车竞赛广东赛区采用 线上竞赛方式 进行.参赛的学校 分成四个高校组合比赛点 进行比赛.经过7月22,23两天的调试比赛,安装 线上比赛赛道 规格进行了一轮的正式比赛.没 ...

  5. 2021年第十六届全国大学生智能汽车竞赛线上比赛的广东、山东赛区赛道铺设规范

    简 介: 由于受到疫情影响,第十六届全国大学生智能汽车竞赛在广东省.山东省采用线上比赛的方案,本文对八个竞速组别的比赛赛道铺设方案进行介绍. 关键词: 智能车竞赛,赛道 §01 比赛环境与赛道 一.综 ...

  6. 华南赛区线上比赛安排

    ■ 相关文献链接 2020年全国大学生智能车竞赛华南赛区线上比赛高校组合 第十五届全国大学生华南赛区线上比赛日期安排 第十五届全国大学生智能汽车竞赛线上比赛流程规范 华南赛区线上比赛日期安排 1.各个 ...

  7. 第十五届全国大学生智能汽车竞赛线上比赛流程规范

    第十五届全国大学生智能汽车竞赛 线上比赛流程规范 作者:卓晴博士,清华大学自动化系 更新时间:2020-08-03 Monday ■ 简述   第十五届 全国大学生智能汽车竞赛 由于受到 新冠病毒(C ...

  8. 记一次简单线上比赛--CTF(初级)

    记一次简单线上比赛–CTF(初级) 第一题:胖虎收到了一段特殊的字符串O5SWYY3PNVSXI33FORWGCYQ=,你能帮他解出正确内容吗? 解答: 1.首先看到这一串字符串就想到base64编码 ...

  9. 线上比赛投诉:同一赛点两支队伍比赛车模是否相同?

    简 介: 本文对于关于第十六届全国大学生智能车竞赛线上比赛中投诉车模问题进行分析,给出了分析的初步结论. 关键词: 智能车竞赛,线上比赛,举报问题 #mermaid-svg-ESb9LlYzGB3Ar ...

最新文章

  1. 解决git本地提交不到远程库
  2. 教你如何找出 .NET 进程中的所有托管异常
  3. 刷题练习记录(3)——无重复字符的最长子串(JAVA 和 Python)——set()函数/集合...
  4. sql同时向两个表插入数据_SQL入门-数据库和客户端的安装,表的创建和数据插入...
  5. ❤️六W字《计算机基础知识》(五)(建议收藏)❤️
  6. 【作者面对面问答】包邮送《Redis 5设计与源码分析》5本
  7. mysql db link_oracle11G数据库db_link连接mysql配置(Windows下无需安装Gateway组件)
  8. 为什么文本文件以换行符结尾?
  9. 缓存jQuery对象来提高性能
  10. 公布中秋福利中奖名单
  11. iOS:tintColor详解
  12. java关键字const_java基础知识(三)java关键字
  13. Rigify:关于Rigify生成最终绑定时失败的原因及解决办法
  14. APE转MP3的转换码率说明
  15. Vue2.0+Vue3.0全套教程
  16. python运用在大数据_python 大数据 应用场景
  17. CF1151F Sonya and Informatics
  18. Revit API 开发(12): Revit 文件存储结构
  19. 第五十一章 SQL函数 DECODE
  20. 为什么腾讯微云上传文件会显示服务器繁忙呢,API - 微云

热门文章

  1. oracle 兰贝斯_【咨询/顾问150-500人招聘_最新咨询/顾问150-500人招聘信息】-前程无忧...
  2. python微信聊天机器人_python实战项目,使用itchat模块制作微信聊天机器人
  3. mysql的代码大全_MySql数目字函数大全
  4. 线性代数可以速成吗_英语真的可以速成吗?
  5. 计算机心得300,计算机实训总结计算机实训心得300
  6. markdown 字体颜色_一文搞定Markdown编辑头条号方法
  7. oracle 计划名称,甲骨文修改合作伙伴计划 分为四个级别
  8. 【Centos 7】【Docker】 安装 kafka
  9. 【redis】使用 URI 配置 redis
  10. 【linux】Shell脚本中调用另外一个脚本的方法