力扣刷题记录——682. 棒球比赛、628. 三个数的最大乘积、693. 交替位二进制数

news2024/12/23 23:53:00

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《力扣刷题记录——682. 棒球比赛、628. 三个数的最大乘积、693. 交替位二进制数》。 

目录

682. 棒球比赛

        题目描述

        解题思路

        解题代码

628. 三个数的最大乘积

        题目描述

        解题思路

        解题过程

693. 交替位二进制数

        题目描述

        解题思路

        解题代码


682. 棒球比赛

题目描述

你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。

比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则:

  1. 整数 x - 表示本回合新获得分数 x
  2. "+" - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。
  3. "D" - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分数。
  4. "C" - 表示前一次得分无效,将其从记录中移除。题目数据保证记录此操作时前面总是存在一个有效的分数。

请你返回记录中所有得分的总和。

示例 1:

输入:ops = ["5","2","C","D","+"]
输出:30
解释:
"5" - 记录加 5 ,记录现在是 [5]
"2" - 记录加 2 ,记录现在是 [5, 2]
"C" - 使前一次得分的记录无效并将其移除,记录现在是 [5].
"D" - 记录加 2 * 5 = 10 ,记录现在是 [5, 10].
"+" - 记录加 5 + 10 = 15 ,记录现在是 [5, 10, 15].
所有得分的总和 5 + 10 + 15 = 30

示例 2:

输入:ops = ["5","-2","4","C","D","9","+","+"]
输出:27
解释:
"5" - 记录加 5 ,记录现在是 [5]
"-2" - 记录加 -2 ,记录现在是 [5, -2]
"4" - 记录加 4 ,记录现在是 [5, -2, 4]
"C" - 使前一次得分的记录无效并将其移除,记录现在是 [5, -2]
"D" - 记录加 2 * -2 = -4 ,记录现在是 [5, -2, -4]
"9" - 记录加 9 ,记录现在是 [5, -2, -4, 9]
"+" - 记录加 -4 + 9 = 5 ,记录现在是 [5, -2, -4, 9, 5]
"+" - 记录加 9 + 5 = 14 ,记录现在是 [5, -2, -4, 9, 5, 14]
所有得分的总和 5 + -2 + -4 + 9 + 5 + 14 = 27

示例 3:

输入:ops = ["1"]
输出:1

解题思路

这题很基础就是for循环加上if else分支的判断,删除最后一个元素用pop方法,最后计算一下列表的总和就可以。

解题代码

def calPoints(operations):
    target_list = []
    for i in operations:
        if i == "C":
            target_list.pop()
        elif i == "D":
            target_list.append(target_list[-1]*2)
        elif i == "+":
            target_list.append(target_list[-1]+target_list[-2])
        else:
            target_list.append(int(i))
        # print(target_list)
    return sum(target_list)

628. 三个数的最大乘积

题目描述

给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

示例 1:

输入:nums = [1,2,3]
输出:6

示例 2:

输入:nums = [1,2,3,4]
输出:24

示例 3:

输入:nums = [-1,-2,-3]
输出:-6

解题思路

用itertools.permutations找出列表中所有可能的3位列表,求列表的乘积,将结果添加到一个目标列表中,最终返回这个列表的最大值就可以。

解题过程

import itertools
def maximumProduct(nums):
    temp_list = list(itertools.permutations(nums,3))
    reslut_list = []
    for i in temp_list:
        reslut_list.append(i[0]*i[1]*i[2])
    return max(reslut_list)

可惜超时了,看来得换一个思路。 问题的关键在于怎么处理负数。如果数组中全是非负数,则排序后最大的三个数相乘即为最大乘积;如果全是非正数,则最大的三个数相乘同样也为最大乘积。如果数组中有正数有负数,则最大乘积既可能是三个最大正数的乘积,也可能是两个最小负数(即绝对值最大)与最大正数的乘积。

def maximumProduct(nums):
    nums.sort(reverse=-1)
    # 如果全为正数
    if min(nums) > 0:
        return nums[0] * nums[1] * nums[2]
    elif max(nums) < 0:
        return nums[0] * nums[1] * nums[2]
    else:
        reslut_1 = nums[0]*nums[1]*nums[2]
        reslut_2 = nums[-1]*nums[-2]*nums[0]
        if reslut_1 > reslut_2:
            return reslut_1
        else:
            return reslut_2

693. 交替位二进制数

题目描述

给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。

示例 1:

输入:n = 5
输出:true
解释:5 的二进制表示是:101

示例 2:

输入:n = 7
输出:false
解释:7 的二进制表示是:111.

示例 3:

输入:n = 11
输出:false
解释:11 的二进制表示是:1011.

解题思路

先用bin转化成二进制数字,然后用一个指针去遍历就可以了,还是比较基础的。

解题代码

def hasAlternatingBits(n):
    bin_str = bin(n)[2:]
    l_p = 0
    while l_p+1 < len(bin_str):
        if bin_str[l_p] == bin_str[l_p+1]:
            return False
        l_p += 1
    return True

 

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

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

相关文章

企业实施RPA需考虑的20条建议

如何提高效率又能降低成本&#xff0c;是企业发展所面临的重要挑战。在降本增效的路上&#xff0c;RPA&#xff08;机器人流程自动化&#xff09;以其特点与优势脱颖而出&#xff0c;迅速得到企业青睐。尽管如此&#xff0c;部署RPA也并非一蹴而就。仓促实施可能会给企业带来更…

实时时钟实现

重要知识点 setInterval是一个实现定时调用的函数&#xff0c;可按照指定的周期&#xff08;以毫秒计&#xff09;来调用函数或计算表达式var sNownew Date()&#xff0c;Date 对象会自动把当前日期和时间保存为其初始值。 参数形式有以下&#xff15;种&#xff1a; new Dat…

SpringBoot 接口幂等性实现的4种方案

目录 什么是幂等性 什么是接口幂等性 为什么需要实现幂等性 引入幂等性后对系统的影响 Restful API 接口的幂等性 如何实现幂等性 方案一&#xff1a;数据库唯一主键 方案二&#xff1a;数据库乐观锁 方案三&#xff1a;防重 Token 令牌 方案四、下游传递唯一序列号 实…

mysql连接查询

笛卡尔积现象&#xff1a; 注意&#xff1a; 效率更高的方法&#xff1a;

Pr 计时器动画

​哈喽&#xff0c;各位小伙伴&#xff01;今天我们来学习一下如何制作数字滚动的计时器动画&#xff1f; 新建序列 新建一个1920*1080的序列&#xff0c;选择一张图片作为背景&#xff08;背景图出自不良人第5季&#xff0c;距离第6季开播还有41天&#xff09; 新建文字图层…

5.算法通关面试 --- 递归and分治and贪心

50. Pow(x, n) https://leetcode.cn/problems/powx-n/

【C语言从0到1之文件操作】(原理 画图 举例 不信教不会你 不要放收藏夹落灰 学起来好嘛)

&#x1f57a;作者&#xff1a;迷茫的启明星 &#x1f383;专栏&#xff1a;《数据库》《C语言从0到1专栏》《数据结构》《C语言杂谈》&#x1f3c7;分享喜欢的一句话&#xff1a;心如花木&#xff0c;向阳而生前言在我们的学习中&#xff0c;文件操作是被我们忽略&#xff0c;…

ML 训练与测试数据不满足同分布 - 如何检测?如何解决?

&#x1f604; 同分布问题是数据挖掘中的常见问题&#xff0c;也是ML中的一个重要假设。解决训练与测试数据不满足同分布问题&#xff0c;有助于提高模型的泛化性、稳定性&#xff01; 文章目录一、定义&#xff1a;训练与测试数据不满足同分布定义&#xff1a;❓疑问&#xff…

仿牛客论坛项目

源代码:https://gitee.com/qiuyusy/community 1. Spring 在测试类中使用Spring环境 RunWith(SpringRunner.class) 让Spring先运行ContextConfiguration 导入配置文件implements ApplicationContextAware 后实现方法 获得 applicationContext RunWith(SpringRunner.class) S…

关于JVM

作者&#xff1a;~小明学编程 文章专栏&#xff1a;JavaEE 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 内存区域的划分 程序计数器&#xff08;线程私有&#xff09; Java虚拟机栈 (线程私有) 本地方法栈 堆&#xff08;线程共享&#xff09; 方法…

Leetcode:77. 组合、216. 组合总和 III(C++)

目录​​​​​​​ 77. 组合&#xff1a; 问题描述&#xff1a; 实现代码与解析&#xff1a; 递归&#xff08;回溯&#xff09;&#xff1a; 原理思路&#xff1a; 剪枝优化版&#xff1a; 原理思路&#xff1a; 216. 组合总和 III&#xff1a; 问题描述&#xff1a…

[C/C++]指针,指针数组,数组指针,函数指针

文章目录指针内存空间的访问方式指针变量的声明指针的赋值指针运算用指针处理数组元素指针数组用指针作为函数的参数指针型函数指向函数的指针指针 指针是C从C中继承过来的重要数据类型。通过指针技术可以描述各种复杂的数据结构&#xff0c;可以更加灵活的处理字符串&#xf…

Linux下dmi信息分析工具dmidecode原理

dmidecode命令主要是通过DMI获取主机的硬件信息&#xff0c;其输出的信息包括BIOS、系统、主板、处理器、内存、缓存等等。它是通过SMBIOS&#xff08;System Management BIOS)来获取信息的。SMBIOS是主板或系统制造者以标准格式显示产品管理信息所需遵循的统一规范。 什么是DM…

QA特辑 | 以万变钳制黑灰产之变的验证码产品设计逻辑的答案,都在这里

1月12 日下午&#xff0c;就验证码的攻防对抗问题&#xff0c;顶象反欺诈专家大卫从验证码的破解手段讲起&#xff0c;从防御角度深度剖析如何应对黑灰产的攻击以及验证码在产品能力设计层面应该考虑哪些问题。 直播也吸引了众多关注验证码的观众前来围观&#xff0c;针对验证…

vue3性能优化

文章目录1. Lighthouse1.1 性能参数2. rollup-plugin-visualizer&#xff08;打包代码块分析&#xff09;3. vite配置优化4. PWA离线缓存技术5. 其他优化1. Lighthouse 谷歌浏览器自带的 DevTools 也可以全局安装Lighthouse # 安装 yarn global add lighthouse# 使用 lighth…

Android app集成微信支付

Android app集成微信支付 鉴于微信支付的文档入口不太容易找到、以及文档中有些逻辑不通或者容易产生歧义或者缺失一些信息的情况&#xff0c;记录下此次接入的流程和需要关注的一些点。 使用的是app支付-> APP支付产品介绍 首先阅读介绍等&#xff0c;了解一些基础的概念…

c++数据结构-图(详解附算法代码,一看就懂)

图&#xff08;Graph&#xff09;是一种复杂的非线性结构&#xff0c;它可以描述数据间的关系&#xff0c;被广泛使用。图 G 由两个集合 V 和 E 组成&#xff0c;记为 。V是顶点的有穷非空集合&#xff0c;E是边的集合。通常&#xff0c;也将 G 的顶点集和边集表示为 V(G) 和 E…

尚医通-登录注册搭建-JWT(二十八)

目录&#xff1a; &#xff08;1&#xff09;前台用户系统-登录注册-需求分析 &#xff08;2&#xff09;前台用户系统-登录注册-搭建环境 &#xff08;3&#xff09;前台用户系统-手机登录-基本实现 &#xff08;4&#xff09;前台用户系统-手机登录-整合JWT &#xff08;…

【JUC并发编程】使用多线程可能带来什么问题

【JUC并发编程】使用多线程可能带来什么问题? 文章目录【JUC并发编程】使用多线程可能带来什么问题?什么是多线程并发为什么会出现线程带来的安全性问题可见性问题原子性问题有序性问题活跃性问题性能问题引起线程切换的几种方式什么是多线程 多线程意味着你能够在同一个应用…

Linux的ZONE_DMA,ZONE_NORMAL,ZONE_HIGHMEM及分配页释放页函数的简单介绍

Linux的ZONE_DMA&#xff0c;ZONE_NORMAL,ZONE_HIGHMEM及分配页释放页函数的简单介绍简单介绍一下页&#xff1a;Linux 区&#xff1a;分配页系统调用释放页系统调用简单介绍一下页&#xff1a; 内核把物理页作为内存管理的基本单位。 尽管处理器的最小可寻址单位通常为字(甚至…