调整数组顺序使奇数位于偶数前面
来源:互联网 发布:大数据 包嗅探器 编辑:程序博客网 时间:2024/06/13 09:59
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
解题思路
本题可以采用2.5次遍历的方法来解决。为什么说是2.5次呢?看了下面就知道了。
第一次遍历,找出数组中所有偶数,按照相对次序存到另外一个新建的数组中。
第二次遍历,把数组中所有奇数都存到数组的前半部分。此时可以不用管偶数,因为偶数已经在第一次遍历时存好了。
第二点五次遍历,遍历存偶数的数组,将其中的元素依次添加到原数组的后半部分。因为这次只需要遍历存偶数的数组,所以称之为半次遍历。
代码
/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/class Solution {public: vector<vector<int> > FindPath(TreeNode* root,int expectNumber) { if (!root) return list; dfsFind(root, expectNumber); //深度优先搜索 return list; } private: vector<vector<int> > list; vector<int> tmp; void dfsFind(TreeNode* root, int number) { tmp.push_back(root->val); //存根节点的值 if (!root->left && !root->right && root->val == number) //为叶节点,并且值为number list.push_back(tmp); //存入数组 else { if (root->left) dfsFind(root->left, number - root->val); //搜索左子树 if (root->right) dfsFind(root->right, number - root->val); //搜索右子树 } //不满足值的要求的叶节点什么也不做 tmp.pop_back(); //删除最后一个元素,回到上一层递归 }};
阅读全文
0 0
- 【数组3】-调整数组顺序使奇数位于偶数前面
- 数组3:调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面--总结
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面[
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使偶数位于奇数前面
- coding - 调整数组顺序使奇数位于偶数前面
- 如何在PowerShell中运行VIM
- js判断浏览器类型
- meta 标签
- Rails DB command
- sublime开启vim模式
- 调整数组顺序使奇数位于偶数前面
- Unity中的Debug.Log()方法支持富文本
- C# TextBox常用方法总结
- javascirpt正则
- 如何在Linux下使用mail命令发送邮件到外部邮箱
- 树状递归
- fragment复用至EventBus多次调用
- 博文目录 师万物博客的指导思想
- CSU-ACM2017暑期训练1-Debug与STL B