(63)交替数字和(64)找到最高海拔

2024-03-18 09:36

本文主要是介绍(63)交替数字和(64)找到最高海拔,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 每日一言
  • 2. 题目(63)交替数字和
  • 3. 解题思路
  • 4. 代码
  • 5. 题目(64)找到最高海拔
  • 6. 解题思路
  • 7. 代码
  • 8. 结语


1. 每日一言

柳下系船犹未稳,能几日,又中秋。
出自 宋⋅ 刘过 的《唐多令》


2. 题目(63)交替数字和

题目链接:交替数字和

给你一个正整数 n 。n 中的每一位数字都会按下述规则分配一个符号:

最高有效位 上的数字分配到 正 号。
剩余每位上数字的符号都与其相邻数字相反。
返回所有数字及其对应符号的和。

  • 示例 1:
    输入:n = 521
    输出:4
    解释:(+5) + (-2) + (+1) = 4

  • 示例 2:
    输入:n = 111
    输出:1
    解释:(+1) + (-1) + (+1) = 1

  • 示例 3:
    输入:n = 886996
    输出:0
    解释:(+8) + (-8) + (+6) + (-9) + (+9) + (-6) = 0

提示:
1 <= n <= 109


3. 解题思路

  1. 首先,先通过循环计算出输入整数 n 的位数,这里使用了一个临时变量 tmp 来存储 n 的值,然后进行除以10的操作,每除一次,就将位数 sum 加一。这一步骤是为了后续计算偶数位数和奇数位数的数字和作准备。

  2. 接下来是对输入整数按照位数的奇偶进行不同操作的判断:

  3. 如果位数 sum 是偶数,那么就需要按照奇偶位交替地给数字添加正负号,并计算交替数字和,也就是偶数位上的数字带负号,奇数位上的数字带正号,然后将它们相加得到最终结果。

  4. 如果位数 sum 是奇数,同样需要按照奇偶位交替地给数字添加正负号,并计算交替数字和,也就是奇数位上的数字带正号,偶数位上的数字带负号,然后将它们相加得到最终结果。

  5. 最后,返回计算得到的交替数字和作为函数的返回值。

以上的太麻烦了,换一个

  1. 首先,定义变量 sum 用于存储最终的交替数字和的结果,定义变量 f,并初始化为 1,用来控制每一位数字的正负符号。

  2. 接下来通过循环对输入整数 n 进行处理,每次取 n 的个位数字(n%10),然后乘以当前的符号 f,将这个结果累加到 sum 中。然后,通过将 n 除以 10,以便在下一次循环中处理下一位数字,并且更新符号 f 为 -f,以实现交替的符号添加。

  3. 最后,通过返回 -f 乘以 sum,来确保最终的结果是带上正确的数字符号的。

4. 代码

int alternateDigitSum(int n) {int sum = 0;//统计n有几位int tmp = n;//临时存储n的值while(tmp) {tmp/=10;sum++;}tmp = n;if(sum%2 == 0)//偶数{sum = 0;int f = -1;//控制数字符号while(tmp) {sum += (tmp%10)*f;tmp /= 10;f = -f;}}else {sum = 0;int f = 1;//控制数字符号while(tmp) {sum += (tmp%10)*f;tmp /= 10;f = -f;}}return sum;
}

改进一下

int alternateDigitSum(int n) {int sum = 0;//统计n有几位int f = 1;while(n) {sum+=(n%10)*f;n/=10;f=-f;}return sum*(-f);
}

最后的return语句有点绕,详细解释一下
举个例子

// 5 2 1 
// 1 -2 +5 = 4(此时 f = -1)
// 4 * (- f) = 4 值不变(而且这个值就是我们想要的)// 1 2
// 2 - 1 = 1(此时 f = 1)
// 1 * (- f) = -1(此时这个值是我们想要的)

总结一下:标志位f刚开始是1。如果n是奇数位数字,最后累加的结果是正确的,但是f最后是-1,所以sum*(-f)还是res,结果不变;如果n是偶数位数字,最后的结果sum是真正的答案的相反数,而f最后是1,所以sum*(-f)刚好把计算结果取相反数,能得到正确的答案。

5. 题目(64)找到最高海拔

题目链接:找到最高海拔

有一个自行车手打算进行一场公路骑行,这条路线总共由 n + 1 个不同海拔的点组成。自行车手从海拔为 0 的点 0 开始骑行。

给你一个长度为 n 的整数数组 gain ,其中 gain[i] 是点 i 和点 i + 1 的 净海拔高度差(0 <= i < n)。请你返回 最高点的海拔 。

  • 示例 1:
    输入:gain = [-5,1,5,0,-7]
    输出:1
    解释:海拔高度依次为 [0,-5,-4,1,1,-6] 。最高海拔为 1 。

  • 示例 2:
    输入:gain = [-4,-3,-2,-1,4,3,2]
    输出:0
    解释:海拔高度依次为 [0,-4,-7,-9,-10,-6,-3,-1] 。最高海拔为 0 。

提示:
n == gain.length
1 <= n <= 100
-100 <= gain[i] <= 100


6. 解题思路

读懂题目就会发现他是如此的简单

  1. 首先定义两个变量 sum 和 max,分别用于记录当前的海拔高度变化总和以及历史最大海拔高度。

  2. 接下来通过一个 for 循环遍历整个 gain 数组,在每次迭代中,累加当前的海拔变化 gain[i] 到 sum 变量中,并且判断是否出现了更高的海拔高度(即 sum 是否大于 max),如果是则更新 max 为当前的海拔高度。

  3. 最终,返回 max 变量,即为数组 gain 中的最大海拔高度。

7. 代码

int largestAltitude(int* gain, int gainSize) {int sum = 0;int max = 0;for(int i = 0; i < gainSize; i++) {sum+=gain[i];if(max < sum) {max = sum;}}return max;
}

8. 结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


这篇关于(63)交替数字和(64)找到最高海拔的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/821928

相关文章

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

NGINX轻松管理10万长连接 --- 基于2GB内存的CentOS 6.5 x86-64

转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=190176&id=4234854 一 前言 当管理大量连接时,特别是只有少量活跃连接,NGINX有比较好的CPU和RAM利用率,如今是多终端保持在线的时代,更能让NGINX发挥这个优点。本文做一个简单测试,NGINX在一个普通PC虚拟机上维护100k的HTTP

LeetCode:64. 最大正方形 动态规划 时间复杂度O(nm)

64. 最大正方形 题目链接 题目描述 给定一个由 0 和 1 组成的二维矩阵,找出只包含 1 的最大正方形,并返回其面积。 示例1: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4 示例2: 输入: 0 1 1 0 01 1 1 1 11 1 1 1 11 1 1 1 1输出: 9 解题思路 这道题的思路是使用动态规划

AIGC6: 走进腾讯数字盛会

图中是一个程序员,去参加一个技术盛会。AI大潮下,五颜六色,各种不确定。 背景 AI对各行各业的冲击越来越大,身处职场的我也能清晰的感受到。 我所在的行业为全球客服外包行业。 业务模式为: 为国际跨境公司提供不同地区不同语言的客服外包解决方案,除了人力,还有软件系统。 软件系统主要是提供了客服跟客人的渠道沟通和工单管理,内部管理跟甲方的合同对接,绩效评估,BI数据透视。 客服跟客人

【Python从入门到进阶】64、Pandas如何实现数据的Concat合并

接上篇《63.Pandas如何实现数据的Merge》 上一篇我们学习了Pandas如何实现数据的Merge,本篇我们来继续学习Pandas如何实现数据的Concat合并。 一、引言 在数据处理过程中,经常需要将多个数据集合并为一个统一的数据集,以便进行进一步的分析或建模。这种需求在多种场景下都非常常见,比如合并不同来源的数据集以获取更全面的信息、将时间序列数据按时间顺序拼接起来以观察长期趋势等

NC 把数字翻译成字符串

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 有一种将字母编码成数字的方式:‘a’->1, ‘b->2’, … , ‘z->26’。 现在给一串数字,返回有多少种可能的译码结果 import java.u

34465A-61/2 数字万用表(六位半)

34465A-61/2 数字万用表(六位半) 文章目录 34465A-61/2 数字万用表(六位半)前言一、测DC/AC电压二、测DC/AC电流四、测电阻五、测电容六、测二极管七、保存截图流程 前言 1、6位半数字万用表通常具有200,000个计数器,可以显示最大为199999的数值。相比普通数字万用表,6位半万用表具有更高的测量分辨率和更高的测量准确度,适用于精度比较高的测

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html