首页 > 其他分享 >LC 7、整数反转

LC 7、整数反转

时间:2023-07-31 14:23:01浏览次数:27  
标签:10 LC int 反转 复杂度 整数 long ans

LC 7、整数反转

题目描述

这是LeetCode 上的 7、整数反转,难度为 简单

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,231−1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例:

输入:x = 123

输出:321

本题解法参考宫水三叶的刷题日记。

不完美解法

在机试或者周赛这种需要快速AC的场景中,遇到这种文字上进行显示的题目,可以选择性的忽略限制。

对于本题,题目从文字上限制我们只能使用32位的数据结构(int

但由于数据范围过大,使用 int会有溢出的风险,所以我们使用 long来进行计算,再返回转换为int

class Solution{
	int reverse(int x){
		long long ans = 0;
		while(x != 0){
			ans += ans * 10 + x % 10;
			x /= 10;
		}
		return int(ans) == ans ? int(ans) : 0;
	}

}
  • 时间复杂度:数字x的位数,数字大概有logx位, 复杂度为O(log x)
  • 空间复杂度:O(1)

完美解法

再 【不完美解法】中,我们使用了不符合文字限制的 long 数据结构,接下来我们来看看,不适用 long该如何求解。

从上述解法看,我们再循环的 ans = ans * 10 + x % 10这一步会有以处的风险,因此我们需要边遍历边判断是否以处;

  • 对于正数而言,溢出意味着 ans * 10 + x % 10 > Integaer.MAX_VALUE,对等式进行变化后可得 ans > (Integer.MAX_VALUE - x % 10) / 10 所以我们可以进行预判
  • 对于负数而言,溢出意味着 ans * 10 + x % 10 < Integer.MIN_VALUE,对等式进行变化后有 ans < (Integer.MIN_VALUE - x % 10) / 10.
#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX - 1)

class Solution {
public:
    int reverse(int x) {
		long long ans = 0;
		while(x != 0){
            if(x > 0 && ans > ((INT_MAX - x % 10) / 10)) return 0;
            if(x < 0 && ans < ((INT_MIN - x % 10) / 10)) return 0;
			ans = ans * 10 + x % 10;
			x /= 10;
		}
		return ans;
    }
};
  • 时间复杂度:数字x的位数,数字大概有logx位, 复杂度为O(log x)
  • 空间复杂度:O(1)

Label:模拟, 数学

标签:10,LC,int,反转,复杂度,整数,long,ans
From: https://www.cnblogs.com/superJade/p/17593321.html

相关文章

  • Flutter 3.0+ 利用VLC播放器使用rtsp协议,本地测试和打包压缩
    Flutter中使用rtsp协议在Flutter中可以集成VLC播放器通过rtsp协议连接到监控相机来实现远程监控,当然也可以用来做直播APP。使用flutter_vlc_player库扩展包地址点我跳转。首先在pubspec.yaml中添加库引用:dependencies:flutter_vlc_player:^7.2.0安卓端配......
  • PascalCase & camelCase & kebabCase介绍
    原文链接:https://www.cnblogs.com/qdkfyym/p/13528076.html一、PascalCase  帕斯卡拼写法(也叫大骆驼拼写法)  PascalCase 帕斯卡拼写法是一种计算机编程中的变量命名方法。它主要的特点是将描述变量作用所有单词的首字母大写,然后直接连接起来,单词之间没有连接符。比......
  • RS485转ETHERCAT连接支持ethercat总线的PLC
    我们将为大家介绍一款强大的设备——捷米JM-ECT-RS485/232通讯网关。这是一款自主研发的ETHERCAT从站功能的网关,它能够将ETHERCAT网络和RS485或RS232设备无缝连接。这款网关在ETHERCAT总线和RS485或RS232总线中均能发挥主站或从站的作用。它的最大特点就是解决了协议不兼容的问题......
  • Welcome
    您好,欢迎您来到我的博客,我是一个来自中国的信息学竞赛选手。您可以在这些地方找到我:洛谷博客园CodeforcesGithubHydro祝您生活愉快!......
  • Rockchip RK3399 - Codec驱动( Realtek ALC5651)
    ----------------------------------------------------------------------------------------------------------------------------开发板:NanoPC-T4开发板eMMC:16GBLPDDR3:4GB显示屏:15.6英寸HDMI接口显示屏u-boot:2023.04linux :6.3----------------------------......
  • ETHERNET/IP 转ETHERCAT连接倍福和欧姆龙PLC的配置方法
    ETHERNET/IP和ETHERCAT是两种不同的协议,它们在工业生产中都有广泛的应用。然而,由于协议不同,这两种设备之间无法通讯,这给工业生产带来了很大的麻烦。而捷米JM-EIP-ECAT网关应运而生,它能够连接到ETHERNET/IP总线和ETHERCAT总线中,实现两种不同协议设备之间的通讯。这个网关能够大大提......
  • 代码随想录算法训练营第三天|力扣203.移除链表元素、力扣707.设计链表、力扣206.反转
    链表定义:通过指针串联在一起的线性结构,每一个节点由两个部分组成:数据域和指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null,即为空指针。链表类型1.单链表2.双链表3.循环链表,即链表首尾相连,可以解决约瑟夫环问题链表的存储方式数组在内存中是连续分布的,......
  • 反转链表
    title:反转链表date:2023-07-3009:25:12tags:-c/c++categories:-算法-笔试top:反转链表题目来自acwing题目(点击跳转)定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。思考题:请同时实现迭代版本和递归版本。数据范围链表长度[0,30]......
  • 国产MCU-CW32F030开发学习-圆形GC9A01_LCD模块
    国产MCU-CW32F030开发学习-圆形GC9A01_LCD模块硬件平台CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件1.28寸圆形彩色TFT显示屏高清IPS模块240X240SPI接口GC9A01产品介绍1.28寸圆形IPS彩屏,支持RGB65K色显示,显示色彩丰富240X240分辨率,显示清晰IPS全视角面板,超......
  • ret2shellcode
    ret2shellcode介绍shellcode的意思其实就是能获取到shell的code,以前还疑惑为什么要交shellcode。解题1、先查看附件信息使用checksecret2shellcode可以查看到ret2shellcode的信息;发现是32位的小端序,某个段有着可读可写可执行的权限。Arch:i386-32-littleREL......