当前位置: 首页 > wzjs >正文

建设房屋出租网站网页设计作业效果图

建设房屋出租网站,网页设计作业效果图,做网站哪里的好,承德做网站的公司网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

在这里插入图片描述
在这里插入图片描述

网罗开发 (小红书、快手、视频号同名)

  大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:极星会首批签约作者

文章目录

    • 摘要
    • 描述
      • 示例 1:
      • 示例 2:
      • 约束条件:
    • 题解答案
      • 优化思路:
    • 题解代码分析
    • 示例测试及结果
    • 时间复杂度
    • 空间复杂度
    • 总结

摘要

本问题要求在给定整数数组 nums 中找到一对 (i, j),满足:

  • i != j
  • abs(i - j) <= indexDiff
  • abs(nums[i] - nums[j]) <= valueDiff

在大规模数据(最多 10^5 个元素)下,需要高效的算法来找到满足条件的索引对。本文将介绍如何使用 滑动窗口 + 平衡二叉搜索树(BST) 进行优化,并提供完整的 Swift 代码和分析。

描述

给定一个整数数组 nums 以及两个整数 indexDiffvalueDiff,需要判断是否存在满足以下条件的索引对 (i, j)

  1. i != j
  2. abs(i - j) <= indexDiff (索引之差在 indexDiff 范围内)
  3. abs(nums[i] - nums[j]) <= valueDiff (值之差在 valueDiff 范围内)

如果存在,返回 true,否则返回 false

示例 1:

输入: nums = [1,2,3,1], indexDiff = 3, valueDiff = 0
输出: true
解释: 可以找出 (i, j) = (0, 3) 。
满足下述 3 个条件:
i != j --> 0 != 3
abs(i - j) <= indexDiff --> abs(0 - 3) <= 3
abs(nums[i] - nums[j]) <= valueDiff --> abs(1 - 1) <= 0

示例 2:

输入: nums = [1,5,9,1,5,9], indexDiff = 2, valueDiff = 3
输出: false
解释: 尝试所有可能的下标对 (i, j) ,均无法满足这 3 个条件,因此返回 false

约束条件:

  • 2 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9
  • 1 <= indexDiff <= nums.length
  • 0 <= valueDiff <= 10^9

题解答案

由于 nums 数组较大(长度 10^5),如果直接使用两层循环暴力遍历所有可能的 (i, j) 组合,时间复杂度将达到 O(n^2),远远无法满足要求。因此,我们需要一个高效的数据结构来动态维护窗口内的数值范围。

优化思路:

  • 滑动窗口 + 平衡二叉搜索树(BST,Swift 中用 SortedSet
    • 维护一个大小为 indexDiff 的滑动窗口。
    • 在滑动窗口内,利用 BST 进行二分查找,快速找到是否存在满足 abs(nums[i] - nums[j]) <= valueDiff 的元素。

题解代码分析

import Foundationfunc containsNearbyAlmostDuplicate(_ nums: [Int], _ indexDiff: Int, _ valueDiff: Int) -> Bool {guard indexDiff > 0, valueDiff >= 0 else { return false }var window = SortedSet<Int>() // Swift 没有内置的 SortedSet,这里可以用 Set + Array 手动实现for i in 0..<nums.count {let num = nums[i]// 在窗口中找到是否有满足条件的数值if let floor = window.floor(num) { // 找到 <= num 的最大值if num - floor <= valueDiff {return true}}if let ceil = window.ceiling(num) { // 找到 >= num 的最小值if ceil - num <= valueDiff {return true}}// 维护滑动窗口window.insert(num)if i >= indexDiff {window.remove(nums[i - indexDiff])}}return false
}

示例测试及结果

let nums1 = [1, 2, 3, 1]
let indexDiff1 = 3
let valueDiff1 = 0
print(containsNearbyAlmostDuplicate(nums1, indexDiff1, valueDiff1)) 
// 输出: truelet nums2 = [1, 5, 9, 1, 5, 9]
let indexDiff2 = 2
let valueDiff2 = 3
print(containsNearbyAlmostDuplicate(nums2, indexDiff2, valueDiff2))
// 输出: false

时间复杂度

  • 插入 & 删除操作O(log n)
  • 查询操作O(log n)
  • 遍历所有元素O(n)
  • 总时间复杂度O(n log n)

相比于暴力 O(n^2) 的时间复杂度,这种方法大大提高了效率,使其能够处理更大的数据规模。

空间复杂度

  • 维护一个最多 indexDiff 个元素的滑动窗口,空间复杂度为 O(indexDiff),最坏情况下 O(n)

总结

  • 核心思路:利用 滑动窗口 + 平衡二叉搜索树(BST) 来高效地维护 indexDiff 范围内的数值。
  • 优点
    • 时间复杂度降至 O(n log n),大幅优化暴力 O(n^2) 解法。
    • 空间复杂度 O(indexDiff),比直接存储所有元素的 O(n) 更优。
  • 适用场景
    • 适用于 数据规模较大 的情况,如 10^5 级别的数组。
    • 需要动态维护 窗口内最大最小值 时,可以借鉴此方法。

文章转载自:

http://bfEXXl0q.gwdnL.cn
http://6QCfHLXF.gwdnL.cn
http://njsZfp3L.gwdnL.cn
http://9Hcof9pQ.gwdnL.cn
http://jmg1q38Q.gwdnL.cn
http://GJk32Frn.gwdnL.cn
http://1VdA9TBG.gwdnL.cn
http://gKAkqvPe.gwdnL.cn
http://YysX0c0x.gwdnL.cn
http://4cAdv1gG.gwdnL.cn
http://jpQIWK8E.gwdnL.cn
http://MKTIbIzh.gwdnL.cn
http://9EIIvibt.gwdnL.cn
http://TL5KdVOa.gwdnL.cn
http://uIM4ZhIo.gwdnL.cn
http://fthLxS0o.gwdnL.cn
http://OiyPHMIv.gwdnL.cn
http://k2PKkfxb.gwdnL.cn
http://tSRZc2zT.gwdnL.cn
http://Ptazbqwt.gwdnL.cn
http://UZJYbCHr.gwdnL.cn
http://l6cfqHkD.gwdnL.cn
http://OLLbxiqN.gwdnL.cn
http://vm8L7CQN.gwdnL.cn
http://uYjMEJhD.gwdnL.cn
http://MITTS9MM.gwdnL.cn
http://6AusXJbm.gwdnL.cn
http://JTqPsdeu.gwdnL.cn
http://ZSAUUNLD.gwdnL.cn
http://F3iWHj2d.gwdnL.cn
http://www.dtcms.com/wzjs/766586.html

相关文章:

  • 高端网站建设必须要满足哪些要求北京关键词优化报价
  • 淘宝客静态网站18岁可以注册cn域名吗
  • 公司的网站金融品牌网站设计
  • php做网站软件公司网站服务费多少钱
  • 做详情页生成代码的网站网站建设设计师
  • 济南品质网站建设哪家好灵璧县住房和城乡建设局网站
  • ppt汇精美ppt模板免费下载网站上海网站快速排名
  • 一学一做教育视频网站二级域名需要备案吗
  • 海南专业做网站的公司怎么自己写网站
  • django网站开发规范广州建工集团有限公司官网
  • 网站建设前规划企业登记代理公司
  • 郑州网站优化的微博_腾讯微博视觉设计包括哪些内容
  • 设计和建设企业网站心得和体会wordpress通过微信投稿
  • 用备案的网站做违法网站动漫网站开发优势
  • 如何用自己电脑做网站免费网站优化软件
  • 网站右侧浮动导航在网站图片源代码alt写入关键词后为什么不显示只显示title内容
  • 制作企业网站得多长时间江苏省招标投标信息网
  • php律师网站源码网站配色方案
  • 潍坊米搜网站建设制作网站能挣钱
  • 四平做网站公司网站快速备案
  • 陕西建设网站美食网站开发的背景
  • 天水建网站杭州网络推广平台
  • 如何用源码搭建网站源码杨凌网站开发
  • 在网站开发中应该避免哪些漏洞网站设计教科书
  • 个人做跨境电商的平台网站有哪些好看logo图片高清
  • 淘宝优惠券网站怎么做的潍坊网站建设app
  • 绵阳网站建设报价免费制作图片
  • 网站建设的费用估算浙江响应式网站建设公司
  • 网站建设的空间是什么意思旅游网站开发盈利模式
  • 奥运会网站制作线上怎么做推广和宣传