Reverse Integer(反转整数)(leetcode)

题目:

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321

Example 2:

Input: -123
Output: -321

Example 3:

Input: 120
Output: 21

Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.(给一个整型的数,反转输出)

方法一:数学方法;

1、java遇到数据类型的范围问题,记得看api,和c不同。我之前以为−231应该是-2^31。结果java中是Integer.MIN_VALUE。

 

时间复杂度:O(n)     运行时间:26ms

方法二:栈

1、遇到算法题首先要想到用到数据结构的知识。数组,栈,链表,队列,树,图,堆,散列表,堆,图。

  数组:在内存中可以连续存储多个元素。内存分配连续,通过下标访问。优点:按索引查询快,按索引遍历快。缺点:增删慢,无法扩容,只能存一种类型元素。

    频繁查询,对存储空间要求不大,很少增加和删除的情况。

  栈:先进后出     实现递归功能方面的场景

  队列:先进先出    多线程阻塞队列管理

  链表:增删快查询慢  数据量较小,需要频繁增加,删除操作的场景

  树:处理大批量的动态数据方面 有链表和数组的优点

  堆:做数组中的排序

2、感觉自己对api不是很熟悉,栈和队列不知道该怎么用。当把所有数都放入队列后,输出的还是123时竟然想着用两个栈或者一个队列实现。也没想出我存进去一个取出来一个。思维不活跃啊。

时间复杂度:o(n)            运行时间:17ms

 

转载于:https://www.cnblogs.com/shaer/p/10409576.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值