删除有序数组中的重复项-简单
这题没有做出来,看了答案才知道。做这道题不能被题目所迷惑,题目是删除,但是在用删除的时候就不好遍历了,所以官方给的答案是用双指针记录位置并交换。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int k=0;
int slow=1;
for(int i=1;i<nums.size();i++){
if(nums[i]!=nums[i-1]){
nums[slow]=nums[i];
slow++;
}
}
return slow;
}
};
移除元素-简单
受上面一道题的启发,这题自己做出来了,采用双指针的方法。
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int s=nums.size();
int i=0;
int slow=0;
while(i<s){
if(nums[i]!=val){
if(i!=slow){
nums[slow]=nums[i];
}
slow++;
}
i++;
}
return slow;
}
};
二进制数转字符串-中等
这道题是自己解出来的。关键在于如何将十进制小数转为二进制。在整数转为字符串的时候要注意,是整数直接转为了字符还是将整数转为了ASCII码对应的字符。
class Solution {
public:
string printBin(double num) {
string r("0.");
int i=0;
while(i<30){
if(num!=0){
if(int(2*num)<1){
r.push_back('0');
}else{
r.push_back('1');
}
num=2*num-int(2*num);
}
i++;
}
if(num==0){
return r;
}else{
return "ERROR";
}
}
};