Leetcode --9

【简单】力扣算法题解析LeetCode9:回文数 本文介绍了一种高效判断整数是否为回文数的方法。通过反转数字的后半部分并与前半部分比较,避免了完全反转可能导致的溢出问题。算法首先排除负数和末尾为零的非零数,然后在循环中逐步反转后半数字,最后比较前半部分与反转结果(或反转结果/10,针对奇数位)。该方法的时间复杂度为O(log₁₀n),空间复杂度为O(1),适合处理大整数。Java实现代码简洁,测试案例验证了其正确性。 阅读详情

原题链接:https://leetcode.com/problems/palindrome-number/#/description

题目:Determine whether an integer is a palindrome. Do this without extra space.

Some hints:

Could negative integers be palindromes? (ie, -1)

If you are thinking of converting the integer to string, note the restriction of using extra space.

You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How would you handle such case?

There is a more generic way of solving this problem.

题目理解:

首先清楚palindrome是什么,指的是一个数正向、反向读为同一个数,例如:121、2332、9、0、24442等。从第一条提示中可以看出,负数并不是palindrome,所以所有负数都将返回false。



class Solution {
public:
    bool isPalindrome(int x) {
        
        bool result=false;
        
        if(x<0||(x!=0 && x%10==0)){
            return result;
        }
        int sum=0;
        while(x>sum){
            
            sum=sum*10+x%10;
            x=x/10;
            
        }
        
        if(sum==x||x==sum/10){
            result=true;
        }
       return result;
   
    }
};

首先,负数、以及十的整数倍的数字肯定不是palindrome,返回false,下面while循环体是将x反转一半,例如将124421,经过while循环后,sum将得到124;强123经过while循环后将得到32。这么做的目的就是比较x前半部分以及x后半部分的反转sum。

最后的if语句是判断x是否为回文数。若sum==x,则肯定是回文数(如x=12344321);后面x==sum/10时是为了处理x位数为奇数位时发生的情况,如x=121或x=12321这种情况。


补充知识点:

1.c++可以定义10进制、8进制、16进制的数:

int a=0x80000000

a位16进制的int型。


2.有符号和无符号数的左移和右移

先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如:
int i = 1;
i = i << 2; //把i里的值左移2位
也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成000... 0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有可能导致符号变化,下面 解释原因)
需要注意的一个问题是int类型最左端的符号位和移位移出去的情况.我们知道,int是有符号的整形数,最左端的1位是符号位,即0正1负,那么移位的时候就会出现溢出,例如:
int i = 0x40000000; //16进制的40000000,为2进制的01000000...0000
i = i << 1; 
那么,i在左移1位之后就会变成0x80000000,也就是2进制的100000...0000,符号位被置1,其他位全是0,变成了int类型所能表 示的最小值,32位的int这个值是-2147483648,溢出.如果再接着把i左移1位会出现什么情况呢?在C语言中采用了丢弃最高位的处理方法,丢 弃了1之后,i的值变成了0.
左移里一个比较特殊的情况是当左移的位数超过该数值类型的最大位数时,编译器会用左移的位数去模类型的最大位数,然后按余数进行移位,如:
int i = 1, j = 0x80000000; //设int为32位
i = i << 33; // 33 % 32 = 1 左移1位,i变成2
j = j << 33; // 33 % 32 = 1 左移1位,j变成0,最高位被丢弃
在用gcc编译这段程序的时候编译器会给出一个warning,说左移位数>=类型长度.那么实际上i,j移动的就是1位,也就是33%32后的余数.在gcc下是这个规则,别的编译器是不是都一样现在还不清楚.
总之左移就是: 丢弃最高位,0补最低位
再说右移,明白了左移的道理,那么右移就比较好理解了.
右移的概念和左移相反,就是往右边挪动若干位,运算符是>>.
右移对符号位的处理和左移不同,对于有符号整数来说,比如int类型,右移会保持符号位不变,例如:
int i = 0x80000000;
i = i >> 1; //i的值不会变成0x40000000,而会变成0xc0000000
就是说,符号位向右移动后,正数的话补0,负数补1,也就是汇编语言中的算术右移.同样当移动的位数超过类型的长度时,会取余数,然后移动余数个位.
总之,在C中,左移是逻辑/算术左移(两者完全相同),右移是算术右移,会保持符号位不变.实际应用中可以根据情况用左/右移做快速的乘/除运算,这样会比循环效率高很多.








【TI毫米波雷达】IWR6843AOPEVM-G与DCA1000EVM实战:从硬件连接到数据流解析 本文详细解析了TI毫米波雷达开发套件IWR6843AOPEVM-G与DCA1000EVM的硬件连接、模式配置及数据流处理全流程。针对官方手册中的常见配置错误,提供了避坑指南和实测验证的正确设置方法,包括开关配置、网络参数等关键步骤。通过mmWave Studio软件配置雷达参数,并深入解析数据采集与处理流程,帮助开发者高效实现毫米波雷达应用开发。 阅读详情

相关推荐

方法二:旋转机械动平衡精度计算

本文以实际案例为基础,系统阐述基于ISO 1940标准的动平衡精度G GG等级计算方法。通过角速度转换、许用剩余不平衡量e p e r e_{per}e per ​ 推导及G GG等级公式应用,结合惯性力偶矩、转子质量等参数,得出某转子系统的动平衡精度为G 40 G40G40。文中详细解析了公式原理与参数单位转换要点,并附完整ISO 1940动平衡等级参考表,为工程师提供从理论到实践的完整解决方案。研究结果表明,该方法可有效量化旋转机械的平衡精度,适用于风机、泵类等中低速设备的设计与调试,对提升设备运行

weixin_46153372的博客 922

大侠刷力扣(leetcode):回文数(9)

作者:隋顺意 微信:世界上的霸主 博客:Sui_da_xia 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。算法:想要判断此数是否为回文数,先要知道啥事回文数……

Sui_da_xia的博客 1422

HIL(硬件在环)技术汇总梳理

HIL(Hardware-in-the-Loop)测试领域的知名公司有dSPACE、NI、Vector和speedgoat等,本文是针对这几家HIL技术的对比分析。

Mr.Cssust的博客 3686

力扣(Leetcode)第9题:回文数(C语言版本)

给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。解释:从左向右读, 为 -121。从右向左读, 为 121-。因此它不是一个回文数。本题主要是判断一个数是否为回文数(相当于正着读和反着读,数值都是一样的)回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。解释:从右向左读, 为 01。因此它不是一个回文数。- 1 -----可见在定义整型数时需要。例如,121 是回文,而 123 不是。输入:x = -121。输入:x = 121。

qq_39855356的博客 614

相机图像质量研究(22)常见问题总结:CMOS期间对成像的影响--光学串扰

光学串扰是一个比较难以理解的光学现象,实际影响往往不大。一、光学串扰产生的原因通常是入射角度太大,光线在不同通道之间产生了混叠二、光学串扰产生的现象光学串扰容易导致迷宫纹。总结本节讲了光学串扰产生的原因,现象。

xiaoshixiu的专栏 1573

Ego Planner规划算法(上)——Ego Planner流程介绍

本系列文章用于学习记录Ego-Planner规划算法的相关内容,本系列文章是在在Fast Planner规划算法系列文章的基础上,展开对Ego Planner的相关介绍,主要包括Ego Planner算法流程和程序框架两部分,主要学习资料是深蓝学院的移动机器人运动规划课程

慕羽★的博客 1万+

LeetCode力扣数据库题目复习解答_day9_题号1204,1211,1251

表: Queueperson_id 是这个表具有唯一值的列。该表展示了所有候车乘客的信息。表中 person_id 和 turn 列将包含从 1 到 n 的所有数字,其中 n 是表中的行数。turn 决定了候车乘客上巴士的顺序,其中 turn=1 表示第一个上巴士,turn=n 表示最后一个上巴士。weight 表示候车乘客的体重,以千克为单位。有一队乘客在等着上巴士。然而,巴士有1000 千克 的重量限制,所以其中一部分乘客可能无法上巴士。

weixin_44223635的博客 501

061、LQR(线性二次型调节器)控制基础

本文介绍了LQR(线性二次型调节器)控制在飞控系统中的应用。作者通过一次四旋翼炸机事故引出PID控制的局限性,详细讲解了LQR的数学原理、权重矩阵的物理意义以及实际工程实现方法。文章对比了LQR与PID的控制效果,指出LQR在鲁棒性方面的优势,同时也分析了其存在稳态误差等缺点。最后总结了LQR在飞控中的适用场景,建议将LQR与PID结合使用,并预告了下一章将讨论带积分项的LQI控制。全文包含具体案例、代码实现和调参经验,为飞控算法开发者提供了实用指导。

2401_88858637的博客 720

#力扣LeetCode1323. 6 和 9 组成的最大数字 @FDDLC

题目描述: 1323. 6 和 9 组成的最大数字 - 力扣(LeetCode) (leetcode-cn.com) Java代码: class Solution { public int maximum69Number (int n) { if(n/1000%10==6)return n+3000; else if(n/100%10==6)return n+300; else if(n/10%10==6)return n+30;

LiuXingchang的博客 377

基于STM32设计的消防小车

当前基于STM32单片机设计了一款智能消防小车;当前小车支持烟雾浓度检测、可燃气体检测,环境温度湿度检测、火焰源检测、能支持远程遥控,方便消防员远程操控进行灭火。小车也支持自动消防,在行驶过程中,消防智能小车通过火焰传感器感应火源以检测火焰具体位置,可以利用算法设计进行循迹灭火,该模式下驱动电机水泵喷水,可以有效控制火源的第二次发生,从而完成消防作业。小车本身带了超声波测距模块,红外壁障模块,在自动或者手动控制行驶过程中可以防止碰到障碍物损伤小车。

7377

YOLOv11在RK3588芯片上的NPU加速与INT8量化部署全面指南

RK3588 NPU适配YOLOv11的关键技术要点 摘要:本文详细分析了Rockchip RK3588 NPU的硬件架构特性及其对YOLOv11模型的适配优化方案。RK3588 NPU采用三核设计,具备6TOPS算力,包含192个MAC单元和128KB专用SRAM。YOLOv11作为最新目标检测模型,其CSPNet-v5骨干网络、PANet特征金字塔和SiLU激活函数需要特殊适配处理。文章系统介绍了从PyTorch模型导出、ONNX优化到RKNN模型转换的完整流程,重点阐述了NPU不支持的算子处理方案和量

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1357

力扣9.回文数

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。是一个回文整数,返回。

2502_90980100的博客 237

【Unity】Gif图片播放插件(支持UI及模型纹理渲染两种模式)

unity本身不支持GIF格式文件直接渲染, 因此一般的做法是通过加载图片,通过代码控制其循环播放、停止等,模拟动画效果,本文简单介绍一下某个现有开源工具,感谢开源作者。

灵境引路人 4036

【力扣LeetCode】9 回文数

题目描述(难度易) 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数...

Jiewang的博客 183

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

力扣9. 回文数

力扣9. 回文数 https://leetcode-cn.com/problems/palindrome-number/ 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一...

小麦China的博客 287

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

力扣简单题系列:回文数(LeetCode 9)

这道题通过反转整数并比较的方式,可以轻松判断一个整数是否是回文数。

weixin_53910667的博客 453

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

力扣 9. 回文数

题目来源:力扣 https://leetcode-cn.com/problemset/all/ class Solution: def isPalindrome(x): ''' #使用字符串翻转 x = str(x) if x[::-1] == x: return True else:...

sinat_41789374的博客 267

9. 回文数 - 力扣(LeetCode)

【代码】9. 回文数 - 力扣(LeetCode)

xxm919的博客 254

力扣LeetCode:Python3代码解析 — 9.回文数

力扣LeetCode:Python3代码解析 — 9.回文数回文数解法一:字符串颠倒解法二:整数取反结果对比 回文数 难度:简单 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文

Senimo 652

力扣9题解

2025.3.12。

wang__12300的博客 221

力扣(LeetCode) 9: 回文数 - 解法思路

给定一个整数x,如果x是回文数,返回true;否则,返回false。回文数是指正读和反读都相同的整数。字符串转换方法是最简单的,在大多数情况下实际最快。反转数字方法使用常数空间但稍慢。根据你的优先级选择:简单性和速度(字符串)vs 空间效率(反转)。

Yao H. Wang's Blog 453

力扣LeetCode 简单题9.回文数 。取余数法

9. 回文数 难度简单1862 给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121是回文,而123不是。 示例 1: 输入:x = 121 输出:true 示例2: 输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入:x = 10 输出:false 解释...

m0_46630679的博客 368

力扣题库——9.回文数

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。是一个回文整数,返回。

weixin_74165584的博客 825

面试题 16.20. T9键盘-力扣双百代码

在老式手机上,用户通过数字键盘输入,手机将提供与这些数字相匹配的单词列表。每个数字映射到0至4个字母。给定一个数字序列,实现一个算法来返回匹配单词的列表。你会得到一张含有有效单词的列表。输入: num = “2”, words = [“a”, “b”, “c”, “d”]输入: num = “8733”, words = [“tree”, “used”]输出: [“tree”, “used”]输出: [“a”, “b”, “c”]

weixin_43327597的博客 333

力扣(LeetCode)刷题,简单题(第9期)

力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

不脱发的程序猿 3343

【力扣(LeetCode)】【Python】【9.回文数】

力扣(LeetCode)

繁华倾夏的博客 157
上一篇: 数据结构的堆栈与内存中堆栈的区别
下一篇: KNN
Ddreaming
博客等级 码龄10年 122粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值