【小米oj】 找出旋转有序数列的中间值

 1 #define mm(a) memset(a,0,sizeof(a));
 2 #define max(x,y) (x)>(y)?(x):(y)
 3 #define min(x,y) (x)<(y)?(x):(y)
 4 #define Fopen freopen("1.in","r",stdin); freopen("m.out","w",stdout);
 5 #define rep(i,a,b) for(int i=(a);i<=(b);i++)
 6 #define per(i,b,a) for(int i=(b);i>=(a);i--)
 7 #include<bits/stdc++.h>
 8 typedef long long ll;
 9 #define PII pair<ll,ll>
10 using namespace std;
11 const int INF=0x3f3f3f3f;
12 const int MAXN=(int)1e5 + 5;
13
14 vector<int>v;
15 int main() {
16     string input,temp;
17     while (cin >> input) {
18         istringstream iss(input);
19         v.clear();
20         int max1=0;
21         int min1=INF;
22         while (getline(iss, temp, ‘,‘)) {
23             int x=atoi(temp.c_str());
24             v.push_back(x);
25         }
26         int n=v.size();
27         sort(v.begin(),v.end());
28         printf("%d\n",v[n/2]);
29     }
30     return 0;
31 }

20 int max1=0;
21 int min1=INF;

20 int max1 = 0;

21 int min1 = INF;

原文地址:https://www.cnblogs.com/dogenya/p/10815582.html

时间: 2024-11-01 21:21:26

【小米oj】 找出旋转有序数列的中间值的相关文章

找出旋转有序数列的中间值python实现

题目给出一个有序数列随机旋转之后的数列,如原有序数列为:[0,1,2,4,5,6,7] ,旋转之后为[4,5,6,7,0,1,2].假定数列中无重复元素,且数列长度为奇数.求出旋转数列的中间值.如数列[4,5,6,7,0,1,2]的中间值为4.输入 4,5,6,7,0,1,2 输出 4 输入样例11,2,34,5,6,7,0,1,212,13,14,5,6,7,8,9,10输出样例1249 方法1 排序后直接取. def solution(line): #line = "4,5,0,1,2&qu

华为OJ:找出字符串中第一个只出现一次的字符

可以稍微让代码写的好看,不用直接写双循环的话,就可以写成函数的调用,重用性也很高. import java.util.Scanner; public class findOnlyOnceChar { public static boolean FindChar(String pInputString, char pChar){ int count=0; for(int i=0;i<pInputString.length();i++){ if(pInputString.charAt(i)==pCh

找出该树中第二小的值--思路及算法实现

在二叉树中最重要的操作莫过于遍历,即按照某一顺序访问树中的所有节点.二叉树的前序遍历.中序遍历.后序遍历都有递归和循环两种不同的实现方法.每种遍历的递归实现都比循环实现要简洁很多.下面分享一个关于二叉树遍历到笔试题: 给定一棵完全二叉树,即树中的每一个节点有2个子节点或者没有子节点,每一个节点的值小于等于它的子节点的值.请找出该树中第二小的值.如果没有第二小的值,请给出-1: 解题思路:画图举例解决问题,如下图所示,根节点是1,每一个节点的值小于等于它的子节点的值,访问根节点后再先后访问左子树和

网易笔试题:找出指定区间数列中能被3整除的个数

题目描述:给定一个数列:1,12,123,...,12345678910,1234567891011...,找出指定区间能被3整除的个数. 输入描述:输入两个数字l和r,代表数列的第l个数和第r个数 输入描述:输出区间内能被三整除的个数 例:输入:2 5 输出:3 因为12,123,1234,12345中能被3整除的有3个. 思路:该题涉及的数字比较大,不能直接用整形或是长整型来存储数字,可以用字符串来存储数字,判定能否被3整除的方法就是看将数字各位的数相加得到的数能否被3整除. 代码如下: #

找出数组中前K小的值&amp;最小堆

题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 代码 public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { if (input.length==0||k>input.length) { return new ArrayList<>(); } ArrayList<Integer> list

【LeetCode】Search in Rotated Sorted Array——旋转有序数列找目标值

[题目] Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). You are given a target value to search. If found in the array return its index, otherwise return -1. You may assume no d

[小米OJ] 4. 最长连续数列

思路: 时间限制为O(n),即不能使用先排序后寻找的方法. 这里利用哈希表查询插入复杂度都为O(1)的特性来解,利用一个哈希表来保存每一个数字以及其所在数列的长度. 遍历每一个数字n:查询表中是否存在n-1和n+1,若存在,则hash[n]的值为1 + hash[n-1] + hash[n+1],若不存在即是 1. 同时,为了预防相同数字多次判断,每一次遍历时判断该数字在表中的value是否为0,若不为0说明已经判断过了,跳过即可. #include <bits/stdc++.h> using

logn+m复杂度找两个有序数列的中位数

class Solution { public: double fun(vector<int> nums1,int n,vector<int> nums2,int m,int k) { if(nums1.size()-n>nums2.size()-m) return fun(nums2,m,nums1,n,k); if(n==nums1.size()) return nums2[k-1+m]; if(k==1) return min(nums1[n],nums2[m]); i

找出有序数组中绝对值最小的数

问题: 一个有序数组,值有可能有负值,也有可能没有,现需要找出其中绝对值最小的值. 方法1: 遍历数组,找到绝对值最小值,时间复杂度O(n),n为元素个数. 方法2: 二分查找,因为数组有序,可以利用二分查找,时间复杂度O(logn). 分析步骤: 如果第一个数为正数,说明整个数组没有负数,直接返回第一个数 如果最后一个数为负数,说明整个数组没有正数,直接返回最后一个数 数组元素有正有负,说明绝对值最小的元素肯定在正负数交界处,需要二分查找上场: 如果a[mid]<0,因为数组是升序,说明绝对值