题目描述

给定一个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) {int length = array.size();if(length == 0)return;int i;int *p1;//指向奇数int *p2;//指向偶数int cnt1=0;//p1指针移动次数int cnt2=0;//p2指针移动次数p1 = &array.at(0);//初始化 指向数组首元素p2 = &array.at(0);int temp1=0;//保存p1的奇数值while(!( ( *p1 == array.at(length-1) ) && ( *p2 == array.at(length-1) ) ) )//p1p2指向数字尾元素 退出循环{//printf("%d\t%d\r\n",cnt1,cnt2);while( ( ( *p1 & 0x1) == 0 ) && ( cnt1 < (length-1) ) )//p1指向偶数且不到数组尾 p1移动{p1++;cnt1++;}while( !(  (*(p1+1) & 0x1) == 0 ) && ( cnt1 < (length-1) ) && (cnt1<=cnt2))//p1下一位指向奇数时 使p1指向最后一个奇数{p1++;cnt1++;}while( !(  (*p2 & 0x1) == 0 ) && ( cnt2 < (length-1) ) )//p2指向奇数且不到数组尾 p2移动{p2++;cnt2++;}if( ( cnt1 < cnt2 ) && ( cnt1 < (length-1) ) )//若奇数在偶数前 p1继续向后移动{p1++;cnt1++;continue;}//此时p1指向乱序的第一个奇数 p2指向第一个偶数  p2在p1前面//保存p1位的奇数值 使p2开始往后到p1前的值全部往后移动一位 把保存的p1的奇数值赋给p2指向的位if(!(( *p1 & 0x1) == 0 ))//*p1是奇数{temp1 = *p1;for( i = cnt1 ; i > cnt2 ; i-- ){array.at(i) = array.at(i-1);//printf("%d:%d",i,array.at(i));}array.at(i)=temp1;}//printf("%d:%d",i,array.at(i));if(cnt1<(length-1)){p1++;cnt1++;}if(cnt2<(length-1)){p2++;cnt2++;}if(cnt1==(length-1)){if((( *p1 & 0x1) == 0 ))//数组尾时偶数 退出循环break;}}}
};

解析:(方法二)用两个栈分别存奇偶数,在出栈先赋予数组奇数后偶数(时间复杂度小)

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 算法 (代码的完整性)相关推荐

  1. 道指mt4代码_剑指offer算法题052:正则表达式匹配

    小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...

  2. 剑指offer算法题028:数组中出现次数超过一半的数字

    小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...

  3. java统计一个字符串中每个字符出现的次数_剑指offer算法题054:字符流中第一个不重复的字符...

    推荐阅读:宇宙条的工作总结:一年前还在面试找工作,一年后在面试找工作的学弟学妹们:第一次当面试官的经历分享小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合 ...

  4. 剑指offer算法题分析与整理(一)

    下面整理一下我在刷剑指offer时,自己做的和网上大神做的各种思路与答案,自己的代码是思路一,保证可以通过,网友的代码提供出处链接. 目录 1.数组中的逆序对 2.二维数组中的查找 3.顺时针打印矩阵 ...

  5. 剑指offer算法题分析与整理(二)

    下面整理一下我在刷剑指offer时,自己做的和网上大神做的各种思路与答案,自己的代码是思路一,保证可以通过,网友的代码提供出处链接. 目录 1.序列化二叉树 2.带记忆的DFS搜索 3.坐标数位和不大 ...

  6. LeetCode剑指offer算法备战春招-包含min函数的栈

    剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例 ...

  7. 剑指offer系列-代码的鲁棒性

    文章目录 1.鲁棒性简介 2.总结 3.参考文献 1.鲁棒性简介 鲁棒是因为Robust的音译,也可叫做健壮性.鲁棒性的意思就是,指程序能够判断输入是否合乎规范要求,并对不符合要求的输入予以合理的处理 ...

  8. 剑指offer算法合集

    汇总:Android小白成长之路_知识体系汇总[持续更新中-] 简述 算法,不知道是多少程序猿的痛,对我而言也如此,因此今天开始记录那些刷过的算法题,其中最经典的莫过于剑指offer里的题目,精妙的解 ...

  9. 过分!虾皮被曝大范围毁约;深度学习技巧全辑;MongoDB开源替代 4.7K★;剑指Offer解题代码;大数据算法笔记汇总;前沿论文 | ShowMeAI资讯日报

    ShowMeAI日报系列全新升级!覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向.点击查看 历史文章列表, ...

最新文章

  1. SAP QM 执行事务代码QS51维护使用决策的选择集,系统报错 – Transaction no longer valid for catalog ‘3’ -
  2. Playmaker Input篇教程之PlayMaker菜单概述
  3. python获取图片的颜色信息
  4. linux7网卡配置vlan,centos7配置vlan,实现一个网卡两个地址的功能
  5. mysql中如何去除重复数据_MySQL中如何删除重复数据只保留一条
  6. linux下des加密命令,linux下的DES加密
  7. 搞定客户端证书错误,看这篇就够了
  8. 科普!程序员分不清万圣节和圣诞节?
  9. prompt不生效之解决
  10. sqlserver 获取所有表的字段类型等信息
  11. 高光谱提取薯叶特征波长
  12. 计算机专业能进教育局吗,教育局一般招什么专业
  13. 苹果cmsv10精仿好看的挖片网免费自适应简约模板
  14. SCI论文全攻略之构思与撰文(二)
  15. 会计实务综合模拟计算机实训心得,模拟企业会计实训心得体会
  16. 视频转GIF软件哪个好用 怎么将视频转为GIF
  17. 支付宝转账提现相关问题
  18. BZOJ 1189 [HNOI2007]紧急疏散evacuate 二分+最大流
  19. 为skynet的crypt库扩展一些加密(摘要)算法支持
  20. [zz]用三阶贝塞尔曲线(贝兹曲线)拟合劣圆弧的公式(附伪代码)

热门文章

  1. 网络编程学习笔记(使用select函数的TCP和UDP回射服务器程序)
  2. ECharts--自定义tooltip属性
  3. 全文搜索技术—Lucene
  4. backbone.js学习笔记
  5. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块
  6. slidingmenu 中view使用练习
  7. PL/SQL Developer 连接远程oracle的方法
  8. mysql 怎么导入函数_mysql导入导出包括函数或者存储过程_MySQL
  9. leetcode算法题--骑士在棋盘上的概率★
  10. cocos2d-x 输出debug信息