还是一道旋转数组的题目

 /*
 关于这 数组偏移
 1 2 3 4 5   3---->>   3 4 5 1 2
 n =5  返回 2
 */
 
#include <bits/stdc++.h>
using namespace std;
 int a[]={1,2,3,4,5};
 int n=5;
 int count=3;
int fun(int n,int a[],int count,int len)//不给数组长度真的不好做 ,JAVA是能由数组直接拿
{
     int b[2*len];  int ret=0;
     for(int i=0;i<2*len;i++)
      {
          b[i]=a[i%len];//cout<<b[i]<<"  "; 空间换时间,思考的一种方法               
      }
    for(int i=count-1;i<count-1+len;i++)  
      {
        cout<<b[i]<<"  ";   //即输出 旋转后的数组
        if(b[i]==n) 
          {
              ret=i-count+1; 
          }
      }
      cout<<endl;
      return ret;
}
// 1 2 3 4 5 1 2 3 4 5
//     ---------
int main()
{
    cout<<fun(5,a,3,5)<<endl; 
	cout << "Hello,C++ world of AnycodeX!" << endl;
	return 0;
}
时间: 2024-08-11 07:49:55

还是一道旋转数组的题目的相关文章

力扣题目汇总(加一,旋转数组,整数反转)

力扣题目汇总(加一,旋转数组,整数反转) 加一 1.题目描述 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123. 示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321. 2.解题思路 #错误思路 列表最后一位加1,判断最后

求旋转数组的最小数字算法的解析以及完整c语言代码实现

首先了解什么是旋转数组:即把一个数组的最开始的若干个元素搬到数组的末尾,即成为旋转数组,例如数组{3,7,1,8,2}为{1,8,2,3,7}的一个旋转数组. 题目:输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素,例如{1,2,3,4,5}数组的一个旋转数组{3,4,5,1,2},其最小的元素为1, 解析:看到题目以后,我们首先可能会想到遍历这个数组,即可找到最小的元素,时间复杂度为o(n),但是这个思路显然没有利用到数组是递增排序的特性,因此我们得继续寻找更优 的方法,因为原本数组是

程序员面试题目总结--数组(三)【旋转数组的最小数字、旋转数组中查找指定数、两个排序数组所有元素中间值、数组中重复次数最多的数、数组中出现次数超过一半的数】

转!http://blog.csdn.net/dabusideqiang/article/details/38271661 11.求旋转数组的最小数字 题目:输入一个排好序的数组的一个旋转,输出旋转数组的最小元素. 分析:数组的旋转:把一个数组最开始的若干个元素搬到数组的末尾.例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1.这道题最直观的解法并不难.从头到尾遍历数组一次,就能找出最小的元素,时间复杂度显然是O(N).但这个思路没有利用输入数组

【编程题目】旋转数组中的最小元素☆

69.旋转数组中的最小元素(数组.算法).题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个排好序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为 1. 我就用了最简单的方法.而且开始还没考虑1, 0, 1 ,1这样的情况 /* 69.旋转数组中的最小元素(数组.算法). 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个 排好序的数组的一个旋转

题目八:旋转数组的最小数字

///////////////////////////////////////////////////////////////////////////////////////////// //12. 题目八:旋转数组的最小数字 int RotatedBinarySearchMinNum(int aiArray[], int iLen) { int iLeft = 0; int iMid = 0; int iRight = iLen - 1; while (aiArray[iLeft] >= ai

旋转数组,求最小元素

题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.NOTE:给出的所有元素都大于0,若数组大小为0,请返回0. 如果,要求在排序的数组中查找一个数字或者统计某个数字出现的次数,都可以尝试二分查找算法 分析: 旋转之后的数组实际上可以划分成两个有序的子数组:前面子数组的大小都大于后面子数组中的元素 注意到实际上最小的元素就是两个

C++求出旋转数组的最小数字

今天遇到这么一道题目,感觉很有意思,要记下来! 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. NOTE:给出的所有元素都大于0,若数组大小为0,请返回0. 遇到这道题的时候,第一反应就是一个很常见也很普通的解法,遍历整个数组找出最小的数字.代码如下: int minNumberInRotateArray(vector<i

剑指offer:旋转数组的最小数字

题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. NOTE:给出的所有元素都大于0,若数组大小为0,请返回0. 解题思路 这是一道二分查找的变形题,这里的旋转数组是两个有序的递增子数组拼接起来的,且前面一个子数组里的任意一个数都大于后面子数组中的数.而要找的最小值就是前后两个子数组的分界点. 用三个指针begin.end.mi

旋转数组的最小数字

题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.NOTE:给出的所有元素都大于0,若数组大小为0,请返回0. class Solution { public: int minNumberInRotateArray(vector<int> rotateArray) { if(rotateArray.size()==0) re