[Go版]算法通关村第十三关青铜——数字数学问题之统计问题、溢出问题、进制问题
这里写自定义目录标题
- 数字统计专题
- 题目:数组元素积的符号
- 思路分析:无需真计算,只需判断负数个数是奇是偶
- 复杂度:时间复杂度 O ( n ) O(n) O(n)、空间复杂度 O ( 1 ) O(1) O(1)
- Go代码
- 题目:阶乘尾数0的个数
- 思路分析:2和5能凑出1个0,而2出现的次数一定多于5,所以统计5的出现次数即可
- 复杂度:时间复杂度 O ( l o g n ) O(logn) O(logn)、空间复杂度 O ( 1 ) O(1) O(1)
- Go代码
- 溢出问题专题
- 题目:整数反转
- 思路分析:依次除10得到余数进行值组装,注意溢出问题
- 复杂度:时间复杂度 O ( l o g n ) O(log n) O(logn)、空间复杂度 O ( 1 ) O(1) O(1)
- Go代码
- 题目:字符串转换整数 (atoi)
- 思路分析:去除空格 + 确定正负 + 读取数值 + 判断溢出
- 复杂度:时间复杂度 O ( n ) O(n) O(n)、空间复杂度 O ( 1 ) O(1) O(1)
- Go代码
- 题目:回文数
- 解法1:反转数字后对比是否一致,反转过程注意溢出问题
- 解法2:仅反转一半位数后对比是否一致,对比过程注意奇数位数的问题,但不用考虑溢出问题了(优化解法1)
- 进制专题
- 题目:七进制数
- 思路分析:依次出7的余数,拼接后反转,注意拼接时负号要追加上
- 复杂度:时间复杂度 O ( l o g ∣ n ∣ ) O(log |n|) O(log∣n∣)、空间复杂度 O ( l o g ∣ n ∣ ) O(log |n|) O(log∣n∣)
- Go代码
- 题目:进制转换
很多数学相关算法的关键在于找到怎么通过最简洁的方式来解决问题,而不是硬算。
数字统计专题
题目:数组元素积的符号
题目链接:LeetCode-1822. 数组元素积的符号

思路分析:无需真计算,只需判断负数个数是奇是偶
复杂度:时间复杂度 O ( n ) O(n) O(n)、空间复杂度 O ( 1 ) O(1) O(1)
Go代码
func arraySign(nums []int) int {ret := 1for _, v := range nums {if v == 0 {return 0}if v < 0 {ret = -ret}}return ret
}
题目:阶乘尾数0的个数
题目链接:LeetCode-面试题 16.05. 阶乘尾数

思路分析:2和5能凑出1个0,而2出现的次数一定多于5,所以统计5的出现次数即可
复杂度:时间复杂度 O ( l o g n ) O(logn) O(logn)、空间复杂度 O ( 1 ) O(1) O(1)
Go代码
func trailingZeroes(n int) int {num := 0for n > 0 {n = n/5num += n}return num
}
溢出问题专题
题目:整数反转
题目链接:LeetCode-7. 整数反转

思路分析:依次除10得到余数进行值组装,注意溢出问题
复杂度:时间复杂度 O ( l o g n ) O(log n) O(logn)、空间复杂度 O ( 1 ) O(1) O(1)
Go代码
func reverse(x int) int {res := 0for x != 0 {// 获得末尾数字num := x%10// 判断是否大于最大整数if res > 0 && res > (math.MaxInt32-num)/10 {return 0 }// 判断是否小于最小整数if res <0 && res < (math.MinInt32-num)/10 {return 0}res = res*10 + numx = x/10}return res
}
题目:字符串转换整数 (atoi)
题目链接:LeetCode-8. 字符串转换整数 (atoi)

思路分析:去除空格 + 确定正负 + 读取数值 + 判断溢出
复杂度:时间复杂度 O ( n ) O(n) O(n)、空间复杂度 O ( 1 ) O(1) O(1)
Go代码
func myAtoi(s string) int {if len(s) == 0 {return 0}// 去除前面空格for i, v := range s {if v != ' ' {s = s[i:]break}}if len(s) == 0 {return 0}// 确定正负sign := 1if s[0] == '-' || s[0] == '+' {if s[0] == '-' {sign = -1}s = s[1:]}res, v := 0, 0length := len(s)// 读取数值for i:=0; i<length; i++ {if s[i] < '0' || s[i] > '9' {return res}v = int(s[i]-'0')// 判断越界if res > (math.MaxInt32-v)/10 {return math.MaxInt32}if res < (math.MinInt32+v)/10 {return math.MinInt32}res = res * 10 + sign * v}return res
}
题目:回文数
题目链接:LeetCode-9. 回文数

解法1:反转数字后对比是否一致,反转过程注意溢出问题
复杂度:时间复杂度 O ( l o g n ) O(log n) O(logn)、空间复杂度 O ( 1 ) O(1) O(1)
Go代码
func isPalindrome(x int) bool {if x < 0 {return false}num := 0oldx := xnewx := 0for x != 0 {num = x%10 //尾数if newx > (math.MaxInt32-num)/10 || newx < (math.MinInt32-num)/10 {return false}newx = newx*10 + numx = x/10}if newx == oldx {return true}return false
}
解法2:仅反转一半位数后对比是否一致,对比过程注意奇数位数的问题,但不用考虑溢出问题了(优化解法1)
复杂度:时间复杂度 O ( l o g n ) O(log n) O(logn)、空间复杂度 O ( 1 ) O(1) O(1)
Go代码
func isPalindrome(x int) bool {// 负数 和 余数是0但是本身不是0 时if x < 0 || (x%10==0 && x != 0) {return false}num := 0// 反转一半for x > num {num = num*10 + x%10x = x/10}// 考虑奇位数时,忽略中间数,比如12321 中的3if x == num || x == num/10 {return true}return false
}
进制专题
题目:七进制数
题目链接:LeetCode-504. 七进制数

思路分析:依次出7的余数,拼接后反转,注意拼接时负号要追加上
复杂度:时间复杂度 O ( l o g ∣ n ∣ ) O(log |n|) O(log∣n∣)、空间复杂度 O ( l o g ∣ n ∣ ) O(log |n|) O(log∣n∣)
Go代码
func convertToBase7(num int) string {if num == 0 {return "0"}sign := 1if num < 0 {sign = -1// 绝对值numnum = -1 * num}res := make([]byte, 0)var v bytefor num != 0 {// 余数依次是反转的原值v = byte(num%7 + '0')res = append(res, v)num = num/7}if sign < 0 {res = append(res, '-')}reverseArr(res, 0, len(res)-1)return string(res)
}
func reverseArr(arr []byte, left int, right int) {if left >= right {return}for left <= right {arr[left], arr[right] = arr[right], arr[left]left++right--}
}
题目:进制转换
题目链接:LeetCode-
思路分析:
复杂度:时间复杂度 O ( l o g n ) O(logn) O(logn)、空间复杂度 O ( 1 ) O(1) O(1)
Go代码
在这里插入代码片
相关文章:
[Go版]算法通关村第十三关青铜——数字数学问题之统计问题、溢出问题、进制问题
这里写自定义目录标题 数字统计专题题目:数组元素积的符号思路分析:无需真计算,只需判断负数个数是奇是偶复杂度:时间复杂度 O ( n ) O(n) O(n)、空间复杂度 O ( 1 ) O(1) O(1)Go代码 题目:阶乘尾数0的个数思路分析&am…...
GPT-4一纸重洗:从97.6%降至2.4%的巨大挑战
斯坦福大学和加州大学伯克利分校合作进行的一项 “How Is ChatGPTs Behavior Changing Over Time?” 研究表明,随着时间的推移,GPT-4 的响应能力非但没有提高,反而随着语言模型的进一步更新而变得更糟糕。 研究小组评估了 2023 年 3 月和 20…...
大数据Flink学习圣经:一本书实现大数据Flink自由
学习目标:三栖合一架构师 本文是《大数据Flink学习圣经》 V1版本,是 《尼恩 大数据 面试宝典》姊妹篇。 这里特别说明一下:《尼恩 大数据 面试宝典》5个专题 PDF 自首次发布以来, 已经汇集了 好几百题,大量的大厂面试…...
什么是微服务?
2.微服务的优缺点 优点 单一职责原则每个服务足够内聚,足够小,代码容易理解,这样能聚焦一个指定的业务功能或业务需求;开发简单,开发效率提高,一个服务可能就是专一的只干一件事;微服务能够被小…...
【C++入门到精通】C++入门 —— 容器适配器、stack和queue(STL)
阅读导航 前言stack1. stack概念2. stack特点3. stack使用 queue1. queue概念2. queue特点3. queue使用 容器适配器1. 什么是适配器2. STL标准库中stack和queue的底层结构3. STL标准库中对于stack和queue的模拟实现⭕stack的模拟实现⭕stack的模拟实现 总结温馨提示 前言 文章…...
系统架构设计专业技能 · 软件工程之需求工程
系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估(二)【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…...
2023国赛数学建模E题思路模型代码 高教社杯
本次比赛我们将会全程更新思路模型及代码,大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社…...
Baumer工业相机堡盟工业相机如何通过BGAPISDK设置相机的Bufferlist序列(C++)
Baumer工业相机堡盟工业相机如何通过BGAPISDK设置相机的Bufferlist序列(C) Baumer工业相机Baumer工业相机的Bufferlist序列功能的技术背景CameraExplorer如何查看相机Bufferlist功能在BGAPI SDK里通过函数设置相机Bufferlist参数 Baumer工业相机通过BGAP…...
从 Ansible Galaxy 使用角色
从 Ansible Galaxy 使用角色 根据下列要求,创建一个名为 /home/curtis/ansible/roles.yml 的 playbook : playbook 中包含一个 play, 该 play 在 balancers 主机组中的主机上运行并将使用 balancer 角色。 此角色配置一项服务,以…...
ROS与STM32通信(二)-pyserial
文章目录 下位机上位机自定义msg消息发布订阅 ROS与STM32通信一般分为两种, STM32上运行ros节点实现通信使用普通的串口库进行通信,然后以话题方式发布 第一种方式具体实现过程可参考上篇文章ROS与STM32通信-rosserial,上述文章中的收发频率…...
[oneAPI] 使用Bert进行中文文本分类
[oneAPI] 使用Bert进行中文文本分类 Intel Optimization for PyTorch基于BERT的文本分类模型数据预处理数据集定义tokenize建立词表转换为Token序列padding处理与mask 模型 结果OneAPI参考资料 比赛:https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517…...
【数据治理】什么是数据库归档
文章目录 前言什么是数据归档 前言 如果您的日常工作中需要对数据库进行管理,那您肯定已经或即将遭遇这样的困惑:随着业务的蓬勃发展,数据库文件的大小逐渐增大,您需要为在线业务提供越来越大的高性能磁盘容量,但数据…...
AI代码补全 案例 - 阿里云智能编码插件Cosy
文章目录 Cosy简介Cosy安装Marketplace安装【推荐】离线安装安装效果Cosy功能体验代码智能补全代码示例搜索API搜索自然语言搜索控制台异常搜索优质文档搜索Cosy体验有感参考Cosy简介 阿里云智能编码插件(Alibaba Cloud AI Coding Assistant)是一款AI编程助手,提供代码智能…...
【Linux】进程信号篇Ⅰ:信号的产生(signal、kill、raise、abort、alarm)、信号的保存(core dump)
文章目录 一、 signal 函数:用户自定义捕捉信号二、信号的产生1. 通过中断按键产生信号2. 调用系统函数向进程发信号2.1 kill 函数:给任意进程发送任意信号2.2 raise 函数:给调用进程发送任意信号2.3 abort 函数:给调用进程发送 6…...
漏洞指北-VulFocus靶场专栏-中级03
漏洞指北-VulFocus靶场专栏-初级03 中级009 🌸gxlcms-cve_2018_14685🌸step1:安装系统 密码rootstep2 进入后台页面 账号密码:admin amdin888step3 查看详细 有phpinfo() 中级010 🌸dedecms-cnvd_2018_01221dz…...
【leetcode 力扣刷题】数组交集(数组、set、map都可实现哈希表)
数组交集 349. 两个数组的交集排序+双指针数组实现哈希表unordered_setunordered_map 350. 两个数组的交集Ⅱ排序 双指针数组实现哈希表unordered_map 349. 两个数组的交集 题目链接:349. 两个数组的交集 题目内容如下,理解题意:…...
MySQL 8.0.31 登录提示caching_sha2_password问题解决方法
MySQL 8.0.31 登录提示caching_sha2_password问题解决方法 MySQL 8.0.31 使用了 caching_sha2_password 作为默认的身份验证插件,这可能导致一些旧的客户端和库无法连接到服务器。以下是一些解决此类问题的常见步骤和建议: 确保MySQL服务正在运行&#…...
[Google] DeepMind Gemini: 新一代LLM结合AlphaGo技术将力压 GPT-4|未来 AI 领域的新巨头
2016年,Google DeepMind 人工智能实验室孕育出的 AlphaGo 人工智能程序在围棋赛场上一举击败冠军选手,成为历史的见证者。如今,DeepMind 联合创始人兼首席执行官 Demis Hassabis 表示,他们的工程师正借鉴 AlphaGo 的技术研发一款名…...
Maven高级
目录 一、分模块开发与设计 1. 分模块开发的意义 2. 分模块开发(模块拆分) (1)创建Maven模块 (2)书写模块代码 (3)通过maven指令安装模块到本地仓库(install指令&…...
【视觉SLAM入门】5.2. 2D-3D PNP 3D-3D ICP BA非线性优化方法 数学方法SVD DLT
"养气之学,戒之躁急" 1. 3D-2D PNP1.1 代数法1.1.1 DLT(直接线性变换法)1.1.2. P3P 1.2 优化法BA (Bundle Adjustment)法 2. 3D-3D ICP2.1 代数法2.1.1 SVD方法 2.2 优化(BA)法2.2.2 非线性优化方法 前置事项: 1. 3D-2D PNP 该问题描述为&am…...
STM32H7硬件JPEG编码实战:从RGB565到JPEG文件,一个完整项目的避坑记录
STM32H7硬件JPEG编码实战:从RGB565到JPEG文件的完整避坑指南 在嵌入式图像处理领域,实时压缩摄像头采集的原始图像数据一直是个挑战。STM32H7系列凭借其内置的硬件JPEG编解码器(HJPEG),为开发者提供了高效的解决方案。…...
谷歌报告:犯罪黑客用AI发现零日漏洞,AI黑客攻击已成为现实!
AI零日漏洞攻击首现周一,谷歌发布报告,首次确认犯罪黑客使用AI大模型发现了一个此前未知的零日漏洞,差点发动大规模攻击。这意味着安全界担心多年的「AI自动挖洞」从理论变为现实。在Anthropic的Mythos模型已找到数千个零日漏洞的背景下&…...
限时开放:ChatGPT Slogan生成专业版Prompt集(含金融/快消/科技三大垂直领域加密模板)
更多请点击: https://intelliparadigm.com 第一章:ChatGPT Slogan生成的核心原理与边界认知 ChatGPT 生成 slogan 的本质并非“创意发明”,而是基于大规模语料统计规律的条件概率采样。其输出受限于训练数据分布、指令微调策略(如…...
构建现代化网络拓扑可视化的完整解决方案
构建现代化网络拓扑可视化的完整解决方案 【免费下载链接】easy-topo vuesvgelement-ui 快捷画出网络拓扑图 项目地址: https://gitcode.com/gh_mirrors/ea/easy-topo 在数字化转型浪潮中,网络架构日益复杂,传统的手绘拓扑图已无法满足现代运维需…...
如何利用libui-node生态构建跨平台桌面应用:Proton-Native和Vuido深度解析
如何利用libui-node生态构建跨平台桌面应用:Proton-Native和Vuido深度解析 【免费下载链接】libui-node Node bindings for libui, an awesome native UI library for Unix, OSX and Windows 项目地址: https://gitcode.com/gh_mirrors/li/libui-node libui-…...
Next.js企业级开发样板Next-Enterprise:一站式集成最佳实践与工具链
1. 项目概述:为什么说 Next-Enterprise 是 Next.js 企业级开发的“瑞士军刀”? 如果你正在用 Next.js 构建一个中大型、对代码质量和开发体验有要求的企业级应用,那你大概率遇到过这些头疼事:项目初始化配置繁琐,得花…...
macOS 上 GNS3 快速部署与跨 VLAN 通信实战
1. macOS 下 GNS3 的快速安装指南 第一次接触 GNS3 是在准备 CCNP 认证的时候,当时为了省下买真机的钱,在 MacBook Pro 上折腾了好几天。现在回想起来,如果当时有人能给我一份详细的安装指南,至少能少走一半弯路。GNS3 作为网络工…...
避坑指南:ESP32-C3蓝牙通信中ESP_GATTS_READ_EVT事件的正确理解与数据更新时机
ESP32-C3蓝牙GATT通信中的数据更新陷阱与实战解决方案 当你在ESP32-C3上实现蓝牙GATT通信时,是否遇到过这样的困惑:明明在ESP_GATTS_READ_EVT事件中更新了特征值,但客户端读取到的却总是旧数据?这个看似简单的现象背后,…...
基于LLM的邮件智能体:从语义理解到自动化工作流实战
1. 项目概述:一个能“思考”的邮件智能体 最近在折腾一个挺有意思的开源项目,叫 XueJourney/mail-agent 。简单来说,它不是一个简单的邮件收发工具,而是一个能帮你“思考”和“行动”的邮件智能体。想象一下,你每天被…...
Shell脚本错误处理实战:用sh-guard提升Bash脚本健壮性
1. 项目概述:一个为Shell脚本穿上“防护服”的守护者在Linux运维、自动化部署乃至日常的系统管理工作中,Shell脚本是我们最得力的助手。从简单的日志清理到复杂的CI/CD流水线,Shell脚本无处不在。然而,脚本的健壮性却常常被忽视。…...
