剑指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 算法 (代码的鲁棒性)