Where do I belong(算法)

题目

我身在何处?

先给数组排序,然后找到指定的值在数组的位置,最后返回位置对应的索引。

举例:  where([1,2,3,4], 1.5) 应该返回  1 。因为  1.5 插入到数组  [1,2,3,4] 后变成  [1,1.5,2,3,4] ,而  1.5 对应的索引值就是1。

同理,  where([20,3,5], 19) 应该返回  2 。因为数组会先排序为  [3,5,20] ,  19 插入到数组  [3,5,20] 后变成  [3,5,19,20] ,而  19 对应的索引值就是  2 。

提示

Array.sort()

思路

先把指定的值加入数组,然后升序排序数组,最后用  indexOf() 方法返回传入值在数组中的位置。

解法

function where(arr, num) {
  // Find my place in this sorted array.
  arr.push(num);
  arr.sort(function(v1,v2){
    return v1 - v2;
  });
  return arr.indexOf(num);
}

测试

where([10, 20, 30, 40, 50], 35) 应该返回  3 .

where([10, 20, 30, 40, 50], 30) 应该返回  2 .

where([40, 60], 50) 应该返回  1 .

where([3, 10, 5], 3) 应该返回  0 .

where([5, 3, 20, 3], 5) 应该返回  2 .

where([2, 20, 10], 19) 应该返回  2 .

where([2, 5, 10], 15) 应该返回  3 .

时间: 2024-08-08 02:39:25

Where do I belong(算法)的相关文章

hiho 1015 KMP算法 && CF 625 B. War of the Corporations

#1015 : KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. 这一天,他们遇到了一只河蟹,于是河蟹就向小Hi和小Ho提出了那个经典的问题:“小Hi和小Ho,你们能不能够判断一段文字(原串)里面是不是存在那么一些……特殊……的文字(模式串)?” 小Hi和小Ho仔细思考了一下,觉得只能想到很简单的做法,但是又觉得既然河蟹先生这么说了,就

分块算法及模板

此文为博主原创,转载时请通知博主,并把原文链接放在正文醒目位置. 简要介绍 分块算法就是把一串数据分割成几块数据的算法,其实是对暴力的一种优化. 通常在分块时,每块的大小为√n.但最后一块的大小也可能小于√n,只能用暴力来算. 通过把对单个数据的操作转化为对几个块的数据的操作,能够节省时间,提高运算效率. 分块算法在处理大范围的修改.查询问题时有很大优势. 分块算法代码 1 /*此代码主要模仿了钟皓曦大佬的分块算法*/ 2 #include<iostream> 3 #include<cs

kmean算法C++实现

kmean均值算法是一种最常见的聚类算法.算法实现简单,效果也比较好.kmean算法把n个对象划分成指定的k个簇,每个簇中所有对象的均值的平均值为该簇的聚点(中心). k均值算法有如下五个步骤: 随机生成最初始k个簇心.可以从样本中随机选择,也可以根据样本中每个特征的取值特点随机生成. 对每个样本计算到每个簇心的欧式距离,将样本划分到欧氏距离最小的簇心(聚点). 对划分到同一个簇心(聚点)的样本计算平均值,用均值更新簇心(聚点) 若某些簇心(聚点)发生变化,转到2:若所有的聚点都没有变化,转5

【转】BYV--有向图强连通分量的Tarjan算法

转自beyond the void 的博客: https://www.byvoid.com/zhs/blog/scc-tarjan 注:红色为标注部分 [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components). 下图中,子图{1,2,3,4}为一个强连通分量,因为顶

图的连通性:强连通-Tarjan算法

不早了,先上个模板,做些题再来分析一下: 强连通Tarjan算法+前向星 模板如下: const int MAXN=110; const int MAXM=10010; struct edge { int to,next; }; edge E[MAXN]; int head[MAXN],Ecou; int Stack[MAXN],top; int Belong[MAXN],lfcou; int Index; int DFN[MAXN],LOW[MAXN]; bool inStack[MAXN];

Weka算法Classifier-tree-J48源码分析(三)ModelSelection

ModelSelection主要是用于选择合适的列对数据集进行分割,结合上一篇J48的主流程,发现用到的ModelSelection有 C45ModelSelection以及BinC45ModelSelection,先来分析C45ModelSelection. 一.C45ModelSelection 首先作为一个ModelSelection接口,实现的主要方法有两个,分别是selectModel(Instances)和selectionModel(Instances,Instances).C45

51nod 1076 2条不相交的路径 无向图强联通分量 trajan算法

1076 2条不相交的路径 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 给出一个无向图G的顶点V和边E.进行Q次查询,查询从G的某个顶点V[s]到另一个顶点V[t],是否存在2条不相交的路径.(两条路径不经过相同的边) (注,无向图中不存在重边,也就是说确定起点和终点,他们之间最多只有1条路) Input 第1行:2个数M N,中间用空格分开,M是顶点的数量,N是边的数量.(2 <= M <= 25000, 1 <= N <=

【数论算法基础理论与实现】

[题目太正式了我还怎么写ヾ|≧_≦|"] [很简要] [参考文献:<算法导论>.白书.天宇哥哥课件] 1.基础 [除法定理]:对于任何整数a和正整数n,存在唯一整数q和r,满足0<=r<n且a=qn+r   WARN:C++中貌似不完全遵守这个东西,n认为是|n|,并且a为负时r可以为负 []  2.最大公约数 几条性质:gcd(a,b)=gcd(|a|,|b|) gcd(a,0)=|a| gcd(a,ka)=|a|   gcd(a,b)=gcd(b,a mod b) -

hdu 1269 迷宫城堡 最简单的联通图题 缩点算法

迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A房间和B房间,只说明可以通过这个通道由A房间到达B房间,但并不说明通过它可以由B房间到达A房间.Gardon需要请你