【c语言】输入一个递增排序的数组的一个旋转,输出旋转数组中的最小元素
//旋转数组的最小数字
//题目:把一个数组最開始的若干个元素搬到数组的末尾。我们称之为数组的旋转。 //输入一个递增排序的数组的一个旋转。输出旋转数组中的最小元素。 //比如:数组{3。4,5,1,2}为{1,2。3。4。5}的一个旋转,最小元素是1。 #include <stdio.h>
#include <assert.h> int min_equ(int *src, int left, int right)
{
int i = 0;
int ret = src[left];
assert(src != NULL);
for (; i < right; ++i)
{
if (ret >src[i])
return src[i];
}
return ret;
} int find_a_num(int *src, int len)
{
int left = 0;
int right = len - 1;
int mid = left;
assert(src != NULL);
while (src[left] >= src[right])
{
if (right - left == 1)
{
mid = right;
break;
}
mid = (left + right) / 2;
if (src[left] == src[right] && src[mid] == src[right])
{
return min_equ(src, left, right);
}
if (src[mid]>src[left])
{
left = mid;
}
if (src[mid]<src[right])
{
right = mid;
}
}
return src[mid];
}
int main()
{
int src[] = { 3, 4, 5, 1, 2 };
int dst[] = { 1, 0, 1, 1, 1 };
int len = sizeof(src) / sizeof(src[0]);
int len1 = sizeof(dst) / sizeof(dst[0]);
printf("%d\n", find_a_num(src, len));
printf("%d\n", find_a_num(dst, len1));
return 0;
}
【c语言】输入一个递增排序的数组的一个旋转,输出旋转数组中的最小元素的更多相关文章
- 【C语言】求旋转数组的最小数字,输入一个递增排序的数组的一个旋转,输出其最小元素
//求旋转数组的最小数字,输入一个递增排序的数组的一个旋转,输出其最小元素 #include <stdio.h> #include <string.h> int find_mi ...
- 42.输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S, 如果有多对数字的和等于S,输出两个数的乘积最小的。
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S, 如果有多对数字的和等于S,输出两个数的乘积最小的. 这道题有很多烟雾弹: 首先如果有多对,最前面的两个数就是乘积最小的, ...
- 【python】Leetcode每日一题-寻找旋转排序数组中的最小元素
[python]Leetcode每日一题-寻找旋转排序数组中的最小元素 [题目描述] 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组nums ...
- 【python】Leetcode每日一题-寻找旋转排序数组中的最小元素2
[python]Leetcode每日一题-寻找旋转排序数组中的最小元素2 [题目描述] 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组nums ...
- c语言实验报告(四) 从键盘输入字符串a和字符串b,并在a串中的最小元素(不含结束符)后面插入字符串b.
a串中最小元素后的字符被舍弃了. #include<stdio.h>#include<string.h>void main(){ int i,min=0; char a[2 ...
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
// test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- 剑指offer42:数组和一个数字S,输出两个数的乘积最小的
1 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. ...
- 【校招面试 之 剑指offer】第11题 旋转数组中的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如: 数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转, ...
- 剑指Offer面试题:6.旋转数组中的最小数字
一 题目:旋转数组中的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1, ...
随机推荐
- 一个关于Class的小点
public 是公有 private 是私有 没有写就是private
- sedna载入xml文件
如果有一个xml文件a.xml.须要把它载入到sedna数据库xml_db里. sedna是通过se_term把xml载入到数据库的.有两种方法: 1.通过se_term的-query參数. se_t ...
- DirectX11 学习笔记4 - 一个完整的封装框架
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3EzNjExMDYzMDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- webview同步cookies
目前很多android app都内置了可以显示web页面的界面,会发现这个界面一般都是由一个叫做WebView的组件渲染出来的,学习该组件可以为你的app开发提升扩展性. 先说下WebView的一些优 ...
- caffe—ssd安装教程
环境: ubuntu16.04 cuda8.0 cudnn5.0 已安装过caffe1.0 tensorflow1.2 编辑过程中出现问题尽量到这里面搜一下:https://github.com/BV ...
- filezilla的root账户无法连接服务器解决办法
lz一直都是用filezilla上传文件到vm虚拟机的,用的是ubuntu14.04的系统.最近自己重新搭了lamp去做thinkphp的学习,lz有两个账户,一个是kin,另外一个是root.大家都 ...
- Selenium键盘鼠标操作总结
鼠标操作 org.openqa.selenium.interactions.Actions 1.给元素设置焦点. 有时对于a标签等,为了不跳转到别的链接,但是需要设置焦点时就可使用. action.m ...
- [转]C#多线程和线程池
鸣谢原文:http://www.cnblogs.com/wwj1992/p/5976096.html 1.概念 1.0 线程的和进程的关系以及优缺点 windows系统是一个多线程的操作系统.一个程 ...
- DOM基础知识(概念、节点树、事件、Document)
1. DOM概念 全称为 Document Object Model,译为文档对象模型 D:文档 - DOM将HTML页面解析为一个文档 —> document对象 O:对象 - DOM将H ...
- [oracle] 组织架构退格显示 connect by
1. 按组织架构关系退格显示 create or replace view v_vieworg asselect --v.OBJID,v.OBJNAMElevel as levelid, lpad(' ...