Day 13 胜利属于达瓦里氏!
题目1 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
题目2 剑指 Offer 57. 和为s的两个数字
题目3 剑指 Offer 58 - I. 翻转单词顺序
1 . 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
思路; 模拟题 类似快速排序的前期步骤
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
vector<int> res = nums;
int i = 0 , j = nums.size() - 1;
while(i < j){
if(res[i] % 2 == 1) i ++;
if(res[j] % 2 == 0) j --;
if(i < j) swap(res[i] , res[j]);
}
return res;
}
};
2.剑指 Offer 57. 和为s的两个数字
思路: 方法一 遍历 方法二 对撞双指针
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int>res;
set<int>st;
for(auto x : nums){
st.insert(x);
}
for(int i = 0; i < nums.size(); i ++){
if(st.count(target - nums[i])){
res.push_back(nums[i]);
res.push_back(target - nums[i]);
break;
}
}
return res;
}
};
//方法二
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> res;
int i = 0 , j = nums.size()-1;
while(i < j){
int sum = nums[i] + nums[j];
if(sum < target){
i ++;
}else if (sum > target){
j --;
}else{
res.push_back(nums[i]);
res.push_back(nums[j]);
break;
}
}
return res;
}
};
3.剑指 Offer 58 - I. 翻转单词顺序
class Solution {
public:
string reverseWords(string s) {
string ans = "";
int n = s.size();
for(int i = s.size() - 1; i >= 0; i -- ){
if(s[i] != ' '){
int r = i;
while(i >= 0 && s[i] != ' '){
i --;
}
ans += s.substr(i + 1, r - i) + ' ';
}
}
return ans.substr(0 , ans.size() - 1);
}
};