C语言刷力扣
一 .题目
1.整数反转
2.移除元素
二.思路
1.整数反转
题目要求:如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2 ^31 − 1] ,就返回 0。
也就是说不能用long储存结果,而且有些数字可能是合法范围但是反转就可能超过范围了。
我们得需要提前判断有没有溢出,因为数的位数在不断增加,对于负数也一样。
2.移除元素
题目只能用给定的数组,即不能使用额外的空间,一开始我用定义新的数组存储新的值,
在力扣上答案不对,但在编译器上可以
三 代码
(1)
int reverse(int x){
if(x==0)
return 0;
int t = x;
int ret = 0;
long sum = 0;
// if(x<0)
// {
// x =x*-1;
// }
while(x!=0)
{
ret = x%10;
if (sum>214748364 || (sum==214748364 && ret>7)) {
return 0;
}
if (sum<-214748364 || (sum==-214748364 && ret<-8)) {
return 0;
}
sum = sum*10+ret;
x = x/10;
}
return sum;
}
(2)
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int n = nums.size();
int left = 0;
for (int right = 0; right < n; right++) {
if (nums[right] != val) {
nums[left] = nums[right];
left++;
}
}
return left;
}
};
不对的地方还请大佬指教