美文网首页
Objective-C在随机数中取最长的递增序列的长度

Objective-C在随机数中取最长的递增序列的长度

作者: TianKengZhe | 来源:发表于2017-12-16 16:55 被阅读0次

// 从随机数发生器中连续取出1000个数字组成的序列,求其中最长的递增序列的长度;例如取出 [1,9,5,6,8,2,4],最长的递增序列是[5,6,8],长度为3。#importint main(int argc, const char * argv[]) {

@autoreleasepool {

int length = 1; //保存递增序列的长度

int index = 0; //保存递增序列最大的数组下标

int tempLength = 1; //临时递增序列长度

//定义一个可变数组,添加1000个随机数到数组中

NSMutableArray *numbers = [NSMutableArray array];

for (int i = 0; i < 1000; i++) {

int temp = arc4random_uniform(1000) + 1;

[numbers addObject:[NSNumber numberWithInteger:temp]];

}

//遍历数组,比对数组相邻2个数字之间的大小,如果左边小于右边,则为递增序列,长度length自动+1,如果左边大于右边,那么递增序列结束,给出判断临时序列长度tempLength是否小于当前递增序列length的长度,如果小于,则将length的值赋给tempLength,再将length重置为1(因为至少有1位数字,好让继续进行下次循环时计算新的递增序列长度),继续循环直到结束,即可取出最大的递增序列长度tempLength,此递增序列的最大数组下标index。

for (int i = 0; i < numbers.count - 1; i++) {

if (numbers[i] < numbers[i+1]) {

length++;

}else{

if (tempLength < length) {

tempLength = length;

index = i;

}

length = 1;

}

}

//定义一个可变数组,从最大递增序列下标index开始,向前循环,将原始数组numbers中的元素添加到serialNumbers数组中(此处也可以正常循环,(i = index - tempLength +1; i <=index;i++)这样后面可以省略反向排序数组,定义新数组保存的操作)

NSMutableArray *serialNumbers = [NSMutableArray array];

for (NSInteger i = index; i > index - tempLength; i--) {

[serialNumbers addObject:numbers[i]];

}

//反向排序serialNumbers数组,使用newSerialNumbers数组保存

NSArray *newSerialNumbers = [[serialNumbers reverseObjectEnumerator] allObjects];

//打印newSerialNumbers数组和数组长度

NSLog(@"The serialNumbers is %@,the length is %ld",newSerialNumbers,[newSerialNumbers count]);

}

return 0;

}

这是朋友的面试题,我使用Objective-C给出的解决方案,与大家交流。

相关文章

  • Objective-C在随机数中取最长的递增序列的长度

    // 从随机数发生器中连续取出1000个数字组成的序列,求其中最长的递增序列的长度;例如取出 [1,9,5,6,8...

  • 最长递增子序列

    问题描述 求最长递增子序列的长度 分析 主要是确定状态,F[i]表示以ai 结束的最长递增子序列长度,F[i]=m...

  • 动态规划-LIS

    LIS 最长递增子序列 如 x 的 最长递增子序列长度为5 方法一 对 x 排序(升序)生成 x_sorted 对...

  • 各种最x子序列

    最长上升子序列(LIS)问题:给定长度为n的序列a,从a中抽取出一个子序列,这个子序列需要单调递增。问最长的上升子...

  • Python算法之旅元组的风暴之最长连续递增序列

    元组的风暴之最长连续递增序列 小美:前几天老师布置了一道题目:求最长连续递增子序列的长度。我感觉题目并不难,很快就...

  • 2021-12-01 674. 最长连续递增序列【Easy】

    给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。 连续递增的子序列 可以由两个下标 ...

  • random

    random 取随机数 取一个随机浮点数。 在1-3取一个随机数数(整型)。 在序列中随机取一个元素。 在序列中随...

  • LeetCode 674. 最长连续递增序列

    题目 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下...

  • 算法之动态规划算法总结

    设长度为N的数组为{a0,a1, a2, ...an-1),则假定以aj结尾的数组序列的最长递增子序列长度为L(j...

  • Python算法之旅元组的风暴之最长上升子序列

    元组的风暴之最长上升子序列 小美:还记得我们上次做的那道题目吗?求最长连续递增子序列的长度。 阿福:记得啊,当时我...

网友评论

      本文标题:Objective-C在随机数中取最长的递增序列的长度

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