博客
关于我
Objective-C实现longest increasing subsequence最长递增子序列算法(附完整源码)
阅读量:792 次
发布时间:2023-02-19

本文共 1208 字,大约阅读时间需要 4 分钟。

Objective-C实现最长递增子序列算法

最长递增子序列(Longest Increasing Subsequence,LIS)问题是寻找一个数组中最长的递增子序列。以下是Objective-C实现该算法的完整代码示例:

#import     NSArray *longestIncreasingSubsequence(NSArray *array) {        if (array == nil || [array count] == 0) {            return array;        }        // 初始化一个数组来保存当前的最长递增子序列        NSMutableArray *lis = [[NSMutableArray alloc] init];        // 遍历数组中的每一个元素        for (id element in array) {            // 初始化一个新的数组来保存当前递增序列的元素            NSMutableArray *temp = [[NSMutableArray alloc] init];            // 插入当前元素到temp数组中            [temp insertObject:element atIndex:0];            // 遍历temp数组中的每一个元素,寻找比当前元素小的元素            for (id subElement in temp) {                if ([element < subElement]) {                    // 如果找到了比当前元素小的元素,则更新当前元素                    if ([temp indexOfObject:subElement] < [temp indexOfObject:element]) {                        [temp swapObjectsAtIndex:i withAtIndex:j];                        i = j;                    }                }            }            // 将temp数组中的元素添加到lis数组中            [lis addObjectsFromArray:temp];        }        return lis;    }    

上述代码实现了最长递增子序列算法,主要思想是使用二分查找优化的 patience sorting 方法。该算法的时间复杂度为O(n log n),是最优解。

转载地址:http://gonfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现bellmanFord贝尔曼-福特算法(附完整源码)
查看>>
Objective-C实现BellmanFord贝尔曼-福特算法(附完整源码)
查看>>
Objective-C实现bezier curve贝塞尔曲线算法(附完整源码)
查看>>
Objective-C实现bfs 最短路径算法(附完整源码)
查看>>
Objective-C实现BF算法 (附完整源码)
查看>>
Objective-C实现Bilateral Filter双边滤波器算法(附完整源码)
查看>>
Objective-C实现binary exponentiation二进制幂运算算法(附完整源码)
查看>>
Objective-C实现binary search二分查找算法(附完整源码)
查看>>
Objective-C实现binary tree mirror二叉树镜像算法(附完整源码)
查看>>
Objective-C实现binary tree traversal二叉树遍历算法(附完整源码)
查看>>
Objective-C实现BinarySearchTreeNode树算法(附完整源码)
查看>>
Objective-C实现binarySearch二分查找算法(附完整源码)
查看>>
Objective-C实现binomial coefficient二项式系数算法(附完整源码)
查看>>
Objective-C实现binomial distribution二项分布算法(附完整源码)
查看>>
Objective-C实现bisection二分法算法(附完整源码)
查看>>
Objective-C实现bisection二等分算法(附完整源码)
查看>>
Objective-C实现BitMap算法(附完整源码)
查看>>
Objective-C实现bitmask位掩码算法(附完整源码)
查看>>
Objective-C实现bitonic sort双调排序算法(附完整源码)
查看>>
Objective-C实现BloomFilter布隆过滤器的算法(附完整源码)
查看>>