双指针
学习内容:要考虑清楚。
class Solution { public: vectorexchange(vector &nums) { int i = 0, j = nums.size() - 1; while (i < j) { while (i <= nums.size() - 1 && nums[i] % 2 != 0) { ++i; } while (j >= 0 && nums[j] % 2 == 0) { --j; } if (i > nums.size() - 1 || j < 0) { break; } if (i < j && nums[i] % 2 == 0 && nums[j] % 2 != 0) { int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; } ++i; --j; } return nums; } };
剑指 Offer 57. 和为 s 的两个数字
class Solution { public: vectortwoSum(vector &nums, int target) { int i = 0, j = nums.size() - 1; while (nums[i] + nums[j] != target) { if (nums[i] + nums[j] > target) { --j; } else { ++i; } } return {nums[i], nums[j]}; } };
剑指 Offer 58 - I. 翻转单词顺序
邓佳煜是sb。田田 嘻嘻 嘿嘿 哈哈
class Solution { public: string reverseWords(string s) { string res; if (s.empty()) return res; int i = s.length() - 1, j = s.length() - 1; while (i >= 0 && s[i] == ' ') --i; j = i; while (i >= 0) { while (i >= 0 && s[i] != ' ') { --i; } for (int k = i + 1; k <= j; ++k) { res.push_back(s[k]); } res.push_back(' '); while (i >= 0) { if (s[i] == ' ') { --i; } else { break; } } j = i; } res.pop_back(); return res; } };
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)