魔术索引II

题目描述

在数组A[0..n-1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个不下降序列,元素值可能相同,编写一个方法,判断在数组A中是否存在魔术索引。请思考一种复杂度优于o(n)的方法。

给定一个int数组A和int n代表数组大小,请返回一个bool,代表是否存在魔术索引。

测试样例:

[1,1,3,4,5]
返回:true
class MagicIndex {
public:
    bool findMagicIndex(vector<int> A, int n) {
        // write code here
           if(A.size() == 0)
            return true;

        int i;
        for(i = 0; i < n; i++){
            if(A[i] == i)
                return true;
            else {
                if(A[i] < i)
                    i++;
                else
                    i = A[i];
            }
        }

        return false;
    }
};
时间: 2024-12-24 14:37:18

魔术索引II的相关文章

魔术索引I

题目描述 在数组A[0..n-1]中,有所谓的魔术索引,满足条件A[i]=i.给定一个升序数组,元素值各不相同,编写一个方法,判断在数组A中是否存在魔术索引.请思考一种复杂度优于o(n)的方法. 给定一个int数组A和int n代表数组大小,请返回一个bool,代表是否存在魔术索引. 测试样例: [1,2,3,4,5] 返回:false class MagicIndex { public: bool findMagicIndex(vector<int> A, int n) { // write

在数组A中找出一个魔术索引

public static int magicSlow(int[] array) { for(int i=0;i<array.length;i++) { if(array[i]==i) { return i; } } return -1; } public static int magicFast(int [] array,int start,int end) { if(end<start||start<0||end>array.length){ return -1; } int

程序员面试金典算法题

空格替换 题目描述 请编写一个方法,将字符串中的空格全部替换为"%20".假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成. 给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string. 测试样例: "Mr John Smith",13 返回:"Mr%20John%20Smith" "Hello World&qu

PLSQL_性能优化索引Index介绍(概念)

2014-06-01 BaoXinjian In Capgemini 一.摘要 在PLSQL查询优化中,使用和接触最多的应该是索引Index这个概念,个人也觉得对Index选择和优化是程式优化过程中比较重要的概念,特别是刚开始接触PLSQL性能优化 索引的一些概念 一个索引可以由一个或多个列组成, 对列设置索引其实就是对列的内容按一定的方式进行排序,检索数据的时候,检索排过序的数据,检索到最后一个有效数据之后就跳出检索 这样就不必进行全表扫描了,同时可以应用很多算法提高检索效率 数据库多用二分法

PLSQL_性能优化系列01_Oracle Index索引

2014-06-01 BaoXinjian 一.摘要 在PLSQL查询优化中,使用和接触最多的应该是索引Index这个概念,个人也觉得对Index选择和优化是程式优化过程中比较重要的概念,特别是刚开始接触PLSQL性能优化 索引的一些概念 一个索引可以由一个或多个列组成, 对列设置索引其实就是对列的内容按一定的方式进行排序,检索数据的时候,检索排过序的数据,检索到最后一个有效数据之后就跳出检索 这样就不必进行全表扫描了,同时可以应用很多算法提高检索效率 数据库多用二分法检索数据 索引的连接方式

简单算法汇总

一.全排列问题(Permutation) 问题描写叙述:即给定{1,2,3},返回123,132,213,231,312,321 <Permutation> 1)无顺序的全排列问题: 将序列P(n) = {1-.. n}的全排列问题看成P(n)={1,P(n-1)} + {2,P(n-1)}-..的问题.即确定第一个元素的值为1.然后和剩下n-1个元素的全排列结果组合到一起:然后再将1和剩下的每一个元素进行交换.然后和其剩下的n-1个元素排列结果进行组合.显然这是一个递归问题. // 递归实现

careercup-递归和动态规划 9.3

9.3 在数组A[0...n-1]中,有所谓的魔术索引,满足条件A[i]=i.给定一个有序整数数组,元素值给不相同,编写一个方法,在数组A中找出一个魔术索引,若存在的话. 进阶: 如果数组元素有重复值,又该如何处理.? 解法一,选择蛮力法,我们可以直接迭代访问整个数组,找出符号条件的元素. int magicSlow(int arr[],int n) { if(n==0) return -1; int i; for(i=0;i<n;i++) { if(arr[i]==i) return i; }

01.数据库基本概念

a. 数据库基本概念 i. 数据库:是表和数据库访问对象的集合,其中表分别存储了不同的实体信息,每一行数据对应一个实体的描述信息 i. 实体与记录: 1. 实体是所有客观存在的,可以被描述的事物 2. 记录:数据库中存储的数据表格,每一"行"实际上对应一个实体,这样的一行,在数据库中,通常叫做一条"记录" ii. 数据库管理系统(DNMS):是一种系统软件,由一个互相关联的数据集合和一组访问数据的程序构成,主要功能是维护数据库,并有效地访问数据库中各个部分的数据 i

PLSQL_性能优化系列02_Oracle Join关联

2014-09-25 BaoXinjian 一.摘要 Oracle三种主要连接方式的比较 1. Hash Join (1).概述 i. 读取一个表的资料,并将放置到内存中,并建立唯一关键字的位图索引 ii. 读取另一个表,和内存中表通过Hash算法进行比较 (2).适用对象 i. 大表连接小表 ii. 两个大表 2. Nested Loops (1).概述 i. 循环外表记录 ii. 进行逐个比对和内标的连接是否符合条件 (2).适用对象 小表驱动大表,返回较少的结果集 3. Merge Joi