LeetCode之Reverse Integer
2015-09-11 22:25
239 查看
——随记
今天去了ThoughtWorks公司开放日,很激情很年轻化的公司,可能是去的都是本科应届生吧,感觉自己好老……不过还好我长得还比较年轻,没人发现……嘿嘿
相信自己比他们多吃几年盐,人生阅历上应该是有优势的,更成熟稳定更理解,理解自己理解别人
想要过上和闺蜜一起工作的日子,看来还需要更挑战,谁叫我闺蜜那么牛咧
好好练代码吧~
言归正传
今天的题目用了2个小时写好仍然是逻辑很快出来,但细节注意的不够,调试了很多遍
不是这里错,就是那里错……
以后要培养用纸笔演示的习惯
不能完全靠debug
class Solution { public: int reverse(int x) { int a[10] = {0};//分解x 至多10位 int r=0; int j; int i; int flag = 0; int k = 9;//记录原数有多少位//因为32-bit int型 max:2147483647 double MAX = pow(2,31) - 1; int temp = abs(x); if (x < 0) { MAX=MAX+1;// min:-2147483648 flag = 1; } while (temp / pow(10, k)<1&&k>=0) { a[k] = 0; k--;//能知道x是几位数 10^k k+1位 0~k } for (j = k; j >= 0; j--) { a[j+(9-k)] =int(temp / pow(10,j)); temp = temp % int(pow(10,j)); } if (a[0] < 3) { for (i = 0; i<10; i++) { if (double(r) <= MAX - a[i] * pow(10, (10 - i - 1)))//未溢出 { r = r +int( a[i] * pow(10, (10 - i - 1))); } else { r = 0; break; } } if (flag) r = 0 - r;//负数 } else r = 0; return r; }};
难点:
整数范围Int型32位 应为-2^31~+2^31-1
double MAX = pow(2,31) - 1;
负数时,用flag作为负数标志,MAX如果用int型+1会溢出,所以选用double
if (x < 0) { MAX=MAX+1;// min:-2147483648 flag = 1; }
溢出判断
if (double(r) <= MAX - a[i] * pow(10, (10 - i - 1)))//未溢出
数位右移
while (temp / pow(10, k)<1&&k>=0) { a[k] = 0; k--;//能知道x是几位数 10^k k+1位 0~k } for (j = k; j >= 0; j--) { a[j+(9-k)] =int(temp / pow(10,j)); temp = temp % int(pow(10,j)); }
尾数为0情况
例如1000和100的相反数都为1
0的情况
之前忘记约束k>=0,当输入int数为0时,造成了死循环
while (temp / pow(10, k)<1&&k>=0)
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解
- LeetCode [Day 5] Longest Palindromic Substring 题解
- LeetCode [Day 6] ZigZag Conversion 题解