剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
题目描述:剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
int left = 0, right = nums.size() - 1;
int temp;
while(left < right){
if(nums[left] % 2 == 0 && nums[right] % 2 == 1){
temp = nums[left];
nums[left++] = nums[right];
nums[right--] = temp;
}else if(nums[left] % 2 == 0 && nums[right] % 2 == 0){
right--;
}else if(nums[left] % 2 == 1 && nums[right] % 2 == 0){
left++;
right--;
}else{
left++;
}
}
return nums;
}
};
剑指 Offer 57. 和为s的两个数字
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int>result;
int left = 0, right = nums.size() - 1;
while(left < right){
if(nums[left] + nums[right] == target){
result.push_back(nums[left]);
result.push_back(nums[right]);
break;
}else if(nums[left] + nums[right] > target){
right--;
}else{
left++;
}
}
return result;
}
};
剑指 Offer 58 - I. 翻转单词顺序
class Solution {
public:
string reverseWords(string s) {
if(s.length() == 0)return s;
string res;
int left, right = s.length() - 1;
while(right >= 0){
while(right >= 0 && s[right] == ' '){ //注意此处两个条件不能颠倒,不然报错
right--;
}
if(right < 0)break;
left = right;
while(left >= 0 && s[left] != ' ')left--;
res += s.substr(left + 1, right - left);
res += ' ';
right = left;
}
if (!res.empty()) res.pop_back();
return res;
}
};