0
点赞
收藏
分享

微信扫一扫

Leetcode day5

刘员外__ 2022-01-05 阅读 64

题目

整数反转

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

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

在这里插入图片描述

思路

用一个slice来记录给定整数的每一位,然后再反着乘起来

我的垃圾代码(空间复杂度O(n))

func reverse(x int) int {

    i:=0
    var slice_ []int = make([]int,35)
    for i=0;x!=0;i++{
        slice_[i]=x%10;
        x=x/10
    }
    len:=i
    fmt.Println(slice_)
    re:=0
    j:=0
    for j!=len{
       re =re + int(slice_[j]*int(math.Pow10(i-1)))
       i--
       j++
        
    }  
    if re > (1<<31-1) || re<=(-1<<31){   //这里1左移31位就表示2的31次方
        re=0
    }
    return re
    }

大佬的代码(空间复杂度O(1))

func reverse7(x int) int {
  tmp := 0
  for x != 0 {
    tmp = tmp*10 + x%10
    x = x / 10
  }
  if tmp > 1<<31-1 || tmp < -(1<<31) {
    return 0
  }
  return tmp
}

为方便理解这段代码,给一个样例
在这里插入图片描述

stdout里面是每一次循环中tmp中的值

举报

相关推荐

入门python Day5

Java学习 day5

C++ day5

js复习-day5

DAY5 / CSS / 背景

rhcsa Day5 作业

java算法day5

JS基础Day5

0 条评论