网站空间商是什么图书馆网络规划与设计
news/
2025/10/1 14:13:28/
文章来源:
网站空间商是什么,图书馆网络规划与设计,克隆网站首页做单页站几个文件夹,社交网站开发技术岗Problem: 354. 俄罗斯套娃信封问题 文章目录 思路解题方法复杂度Code 思路 这个问题可以转换为最长递增子序列#xff08;Longest Increasing Subsequence#xff0c;LIS#xff09;问题。先对信封按宽度升序排序#xff0c;当宽度相同时#xff0c;按高度降序排序。然后在… Problem: 354. 俄罗斯套娃信封问题 文章目录 思路解题方法复杂度Code 思路 这个问题可以转换为最长递增子序列Longest Increasing SubsequenceLIS问题。先对信封按宽度升序排序当宽度相同时按高度降序排序。然后在排序后的信封数组中找到最长的严格递增的高度序列。 解题方法 首先对信封进行排序接着使用动态规划的思想求解最长递增子序列。具体实现时使用一个ends数组存储递增子序列的结尾元素通过二分查找确定当前元素应该放置的位置。 复杂度
时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn)其中nn是信封的数量。主要开销来自于排序和二分查找。 空间复杂度: O ( n ) O(n) O(n)用于存储排序后的信封数组和ends数组。 Code
class Solution {public int maxEnvelopes(int[][] envelopes) {int n envelopes.length;// 按照信封的宽度排序 如果宽度相同 按照高度从大到小排序Arrays.sort(envelopes, (a, b) - a[0] ! b[0] ? (a[0] - b[0]) : (b[1] - a[1]));// 根据高度LIS模板int[] ends new int[n];int len 0;for (int i 0, find; i n; i) {find bs(ends, len, envelopes[i][1]);if (find -1) {ends[len] envelopes[i][1];} else {ends[find] envelopes[i][1];}}return len;}public int bs(int[] ends, int len, int num) {int l 0, r len - 1, m, ans -1;while(l r) {m (l r) / 2;if(ends[m] num) {ans m;r m - 1;} else {l m 1;}}return ans;}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923921.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!