美文网首页
算法题两则

算法题两则

作者: 汴城码农 | 来源:发表于2023-06-22 20:11 被阅读0次

第一题:
数列前2项为 1 1,从第3项开始,若为奇数项,则值为前两项之和,若为偶数项,则值为前两项之和的2倍
可知该数列前6项为 1 1 2 6 8 28
求该数列的第n项
请用递归和循环两种方式实现

/**
*递归
*/

-(NSInteger)counts:(NSInteger)index{
    if(index == 1 || index == 2){
        return 1;
    }else if (index%2 == 0){
        return ([self counts:index-2] + [self counts:index-1])*2;
    }else if (index%2 == 1){
        return ([self counts:index-2] + [self counts:index-1]);
    }else{
        return 0;//输入0或者负数返回0
    }
}

/**
*for 循环
*/

-(NSInteger)numCounts:(NSInteger)index{
    NSMutableArray *array = @[].mutableCopy;
    
    for (int i = 1; i <= index; i++) {
        if(i == 1 || i == 2){
            [array addObject:1];
        }else if (index%2 == 0){
            NSInteger temp = (array[index-2] + array[index-1])*2;
            [array addObject:temp]
        }else if (index%2 == 1){
            NSInteger temp = (array[index-2] + array[index-1]);
            [array addObject:temp]
        }
    }
    return array.lastObject;
}

第二题:
给定一个int型数组,找出其中大于0的数字中倒数第二小的数字的下标
例如 1 -1 3 2 0,其中大于0的数字有1 3 2,倒数第二小的数字为2,其下标为3
尽量不使用排序

/**
*遍历保存最大值和第二大值
*/

-(NSString* )numCounts:(NSArray *)array{
    
    NSInteger temp_max = 0; //最大数
    NSInteger temp_max2 = 0;//第二大数
    NSInteger index_max = 0;//最大数下标
    NSInteger index_max2 = 0;//第二大数下标
    
    for (int i = 0; i < array.count; i++) {
        NSInteger obj = array[i];
        if (i==0) {
            index_max = i;
            index_max2 =i;
            temp_max = obj;
            temp_max2 =obj;
        }else{
            if (obj > temp_max) {
                temp_max = obj;
                index_max = i;

            }else if (obj > temp_max2){
                temp_max2 =obj;
                index_max2 =i;
            }
        }
    }
    
    if (temp_max2 <= 0) {
        return "倒数第二大值小于等于0,不满足题义";
    }
    
    return [NSString stringWithFormat:@"倒数第二大值为%d,下标为%d",temp_max2,index_max2];
}

相关文章

  • Android面经| 算法题解

    整理了校招面试算法题,部分《剑指offer》算法题,以及LeetCode算法题,本博文中算法题均使用Java实现校...

  • 面试题高频算法题整理

    以下算法题几乎都是简单题,都为面试算法题值得刷的题,需要理解并记住解题思路,而其中★标注的题,更是面试算法题中的高...

  • 回溯,贪心,动态规划

    1.回溯算法思想leetcode 112 号算法题:路径总和leetcode 113 号算法题:路径总和 IIle...

  • 旅行笔记

    《旅行笔记》 端午两则 闻笛 暗送笛声触画柔, 启萌素绢题...

  • 算法题

    一、对一组数据进行降序或者升序排序(冒泡算法) intnums[10] = {4,5,1,10,7,1,8,3,6...

  • 算法题

    现在有一个字符串 string,它是一段英文,要求你统计这段英文里每个字母出现的次数。*例如输入 'Hello',...

  • 算法题

    名企笔试:网易2017春招笔试(工作安排)【http://mp.weixin.qq.com/s/y08d3WhZK...

  • 算法题

    写一个方法 获取一个字符串的长度? 写一个冒泡排序 数组去重 javascript实现格式化输出,比如输入9999...

  • 算法题

    1.求出1-100累加的和 2.求出1-100中奇数相加的和 3.求1000以内的斐波那契数 4.求1000以内的素数

  • 算法题

    1、求二进制数字中1的个数 自带库 (binary_num).count('1') 按位运算符有:左移运算符(<<...

网友评论

      本文标题:算法题两则

      本文链接:https://www.haomeiwen.com/subject/mirmydtx.html