LeetCode27 移除元素 用c++写出可以直接运行的代码
时间: 2024-10-04 15:03:01 浏览: 6
LeetCode题目27是"移除元素"(Remove Element),它要求从给定数组中移除所有特定值x,并返回新数组的长度。以下是使用 C++ 编写的可以直接运行的解决方案:
```cpp
#include <vector>
using namespace std;
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int count = 0;
for (int num : nums) {
if (num != val) {
nums[count++] = num; // 将非目标值移动到原位置
}
}
return count; // 返回新数组的长度
}
};
```
在这个代码中,我们创建了一个名为`Solution`的类,其中包含一个公共成员函数`removeElement`。这个函数接收一个整数向量`nums`和一个整数`val`作为输入。通过遍历数组,我们只将那些不等于`val`的元素移到新数组的开头,最后返回移动后的元素数量即新数组的长度。
相关问题
LeetCode27 移除元素 用c++写出
LeetCode第27题是“移除元素”,它要求你在给定数组 nums 中移除所有值为 val 的元素,并返回新的长度。这通常涉及到遍历数组并创建一个新的数组,新数组只包含不等于 val 的元素。这是一个简单的数据结构问题,可以使用 C++ 来解决。下面是一个简单的 C++ 函数实现:
```cpp
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int count = 0;
for (int num : nums) {
if (num != val) {
nums[count++] = num; // 将非目标值移到新数组中
}
}
nums.resize(count); // 调整新数组大小
return count;
}
};
```
这个函数首先初始化一个计数器 `count`,然后遍历输入数组 `nums`,如果遇到的元素不是 `val`,就将它放入新数组的位置并增加计数器。最后,根据新的长度调整原数组的大小,并返回实际的新长度。
leetcode67 二进制求和 用c++写出可运行代码
在LeetCode第67题中,题目要求实现一个函数,给定两个非负整数,用二进制表示并返回它们相加的值。这通常需要我们将两个数字转换成二进制字符串,然后逐位相加,并处理进位。以下是用C++编写的一个简单示例:
```cpp
#include <string>
using namespace std;
class Solution {
public:
string addBinary(string a, string b) {
int carry = 0;
string result = "";
// 从右向左遍历,直到其中一个字符串结束
for (int i = a.size() - 1, j = b.size() - 1; i >= 0 || j >= 0; --i, --j) {
int sum = carry + (a[i] == '1' ? 1 : 0) + (b[j] == '1' ? 1 : 0);
carry = sum / 2; // 更新进位
result = to_string(sum % 2) + result; // 将当前位的结果添加到结果前
}
// 如果还有进位,将它追加到结果最后
if (carry > 0) {
result = '1' + result;
}
return result;
}
};
```
在这个代码中,我们首先初始化一个`carry`变量用于存储进位,然后通过两个指针从后向前遍历输入的二进制字符串,每次取两数对应位置的比特进行相加,并考虑之前的进位。最后,将所有计算出的结果从低位到高位拼接到一起。