题目描述:

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。

输入:

输入可能包含多个测试样例,对于每个测试案例,

输入的第一行为一个整数n(1<= n<=1000000):代表旋转数组的元素个数。

输入的第二行包括n个整数,其中每个整数a的范围是(1<=a<=10000000)。

输出:

对应每个测试案例,

输出旋转数组中最小的元素。

样例输入:

	5
3 4 5 1 2

样例输出:

1

【解题思路】本题可以采用投机取巧的方法来完成,由于所有输入数据都必须要读入,题目的旋转数组的最小元素即可以看做从所有输入元素中寻找最小元素。这样的话,我们可以再输入元素的同时确定最小元素,如果当前输入元素比目标元素小,更新目标元素为当前输入值,继续输入。输入完成后,最小元素的值将保存在目标元素里面。

当然,本题的初衷不是这样的。本题的输入应该是第一个递增序列加上第二递增序列,而最小的元素即第二个递增序列的头元素。所以寻找到第二个递增序列的头元素即可解答该题。第二个递增序列的头元素也很好找,当发现当前输入的元素比之前的元素小时,该元素即为所找元素。

AC code:

#include <cstdio>
using namespace std; int main()
{
int n,tt,recod=10000002;
while(scanf("%d",&n)!=EOF)
{
recod=10000002;
for(int i=0;i<n;++i)
{
scanf("%d",&tt);
if(tt<recod)
recod=tt;
}
printf("%d\n",recod);
}
return 0;
}
/**************************************************************
Problem: 1386
User: huo_yao
Language: C++
Result: Accepted
Time:650 ms
Memory:1020 kb
****************************************************************/

题目链接:http://ac.jobdu.com/problem.php?pid=1386

最新文章

  1. hdu4970 Killing Monsters (差分数列)
  2. What is the difference between position: static,relative,absolute,fixed
  3. Pytho中两种方式导入模块的差别
  4. 2433: [Noi2011]智能车比赛 - BZOJ
  5. android146 360 病毒查杀
  6. Source Insight 技巧总结
  7. Bootstrap之表格checkbox复选框全选 [转]
  8. struts2文件上传,文件类型 allowedTypes
  9. jquery submit()不能提交表单的解决方法
  10. CentOS的MySQL报错:Can&#39;t connect to MySQL server
  11. iOS AVCaptureDevice的一些动西
  12. nmon的安装与使用
  13. BZOJ 3028 食物 生成函数
  14. linux相关命令及配置(四)
  15. Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查
  16. Fiddler 过滤设置
  17. python基础之Day20part2
  18. AndroidO bluedroid alarm 机制分析
  19. python排列组合之itertools模块
  20. 2016年3月12日Android学习笔记

热门文章

  1. 疯狂python(分享本不错的书)
  2. 「NOI2001」食物链
  3. php redis 集群扩展类文件
  4. Spring Boot Thymeleaf 模板引擎的使用
  5. 洛谷P1346 电车(需要稍加思索的最短路)
  6. Python学习第二十五课——Mysql (多表查询)
  7. 测量设备自动化-AK协议
  8. 20199317 myod实验
  9. day04-MyBatis的注解开发
  10. ECS 系统 Entity-Component-System