剑指offer 算法 (代码的完整性)
生活随笔
收集整理的这篇文章主要介绍了
剑指offer 算法 (代码的完整性)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目描述
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
解析:(方法二)用两个栈分别存奇偶数,在出栈先赋予数组奇数后偶数(时间复杂度小)
class Solution { public:void reOrderArray(vector<int> &array) {if(array.size()==0){return;}vector<int> odd;vector<int> even;for(int i=0;i<array.size();i++){if(array[i]%2==0){even.push_back(array[i]);}else{odd.push_back(array[i]);}}for(int i=0;i<odd.size();i++){array[i]=odd[i];}for(int i = odd.size();i<array.size();i++){array[i]=even[i-odd.size()];}} };
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
class Solution { public:double Power(double base, int exponent) {if(equal(exponent,0.0)&&(exponent<0))//base为零 系数为负数return 0;unsigned int unexponent=(unsigned int) exponent;if(exponent<0)unexponent=(unsigned int) (-exponent);double result;result=powInput(base,unexponent);if(exponent<0)result=1.0/result;return result;}bool equal(double val1,double val2){if(((val1-val2)>-0.000001)&&((val1-val2)<0.000001))return true;elsereturn false;}double powInput(double base,int exponent){int i;double result=1.0;for(i=exponent;i>0;i--)result=base*result;return result;} };题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
解析:(方法一)两个指针p1,p2;p1指向奇数,p2指向偶数,当p1指向的奇数在p2指向的偶数后时,保存p1的奇数,后移从p2开始到p1前一位的数组的数,把奇数赋给p2;p1,p2同时后移一位。直到p1指到数组尾(空间复杂度小)
解析:(方法二)用两个栈分别存奇偶数,在出栈先赋予数组奇数后偶数(时间复杂度小)
class Solution { public:void reOrderArray(vector<int> &array) {if(array.size()==0){return;}vector<int> odd;vector<int> even;for(int i=0;i<array.size();i++){if(array[i]%2==0){even.push_back(array[i]);}else{odd.push_back(array[i]);}}for(int i=0;i<odd.size();i++){array[i]=odd[i];}for(int i = odd.size();i<array.size();i++){array[i]=even[i-odd.size()];}} };
总结
以上是生活随笔为你收集整理的剑指offer 算法 (代码的完整性)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 剑指offer 算法 (位运算)
- 下一篇: 剑指offer 算法 (代码的鲁棒性)