zoukankan      html  css  js  c++  java
  • 题目:翻转整数

    这道题我觉得应该用二进制位移来做比较快,但是懒得想了就写了一个最普通的方法:

    static const auto io_speed_up = []()
    {
        std::ios::sync_with_stdio(false);
        cin.tie(nullptr);
        return 0;
    }();
    
    class Solution {
    public:
        int reverse(int x) 
        {
            long long temp = 0;
            do
                temp = temp * 10 + x % 10;
            while (x /= 10);
            return (temp > INT_MAX || temp < INT_MIN) ? 0 : temp;
        }
    };

    结果超过了99.69%,真滴好奇比这个还慢的是怎么做的。之所以说这个最简单,是因为从返回型为int和要求64位可以得到LeetCode的测试实在64位机的,这样就可以直接用longlong类型计算然后判断是否不在INT范围之内(64位机int范围即为题目规定范围),不在返回0即可。

    我看了排第一的算法,感觉与我无太大差别,仅是他计算的时候把负数转换成了正数,我试着把自己的改为正数,发现速度并没有变化。我复制了排第一的算法进行计算,发现得出时间并不快于我的,我猜测是否LeetCode在不同提交时间,速度会不一样?

  • 相关阅读:
    Go语言学习笔记(3)
    Haskell语言学习笔记(97)Phantom Type
    Rust语言学习笔记(12)
    堆排序 Rust实现
    Rust 智能指针(Rc)
    Rust 泛型
    Rust 枚举
    Rust 结构体
    Rust 引用
    二叉搜索树
  • 原文地址:https://www.cnblogs.com/change4587/p/9170487.html
Copyright © 2011-2022 走看看