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

做机械配件的网站网站建设公司的服务特点

做机械配件的网站,网站建设公司的服务特点,wordpress表白模板,机械厂做的网站模板叫什么文章目录 摘要描述例子: 题解答案(Swift)题解代码分析动态规划核心思路初始条件 示例测试及结果示例 1:示例 2:示例 3: 时间复杂度空间复杂度总结实际场景联系 摘要 在用户体验和界面设计中,颜…

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

文章目录

    • 摘要
    • 描述
      • 例子:
    • 题解答案(Swift)
    • 题解代码分析
      • 动态规划核心思路
      • 初始条件
    • 示例测试及结果
      • 示例 1:
      • 示例 2:
      • 示例 3:
    • 时间复杂度
    • 空间复杂度
    • 总结
    • 实际场景联系

摘要

在用户体验和界面设计中,颜色搭配是个绕不开的核心问题。而在 LeetCode 的一道经典题目「栅栏涂色」中,系统地将这个看似简单的“上色”问题转化为一道有趣的动态规划挑战。今天我们就用 Swift 带你一探这个问题背后的“涂色学”,并分析它的数学规律、代码实现以及实际意义。

描述

题目大意很简单:你要给一排 n 根栅栏涂色。你一共有 k 种颜色可以选择,但有一个限制条件:不能有超过两根相邻的栅栏使用同一种颜色

你需要返回总共有多少种不同的涂色方法。

例子:

输入: n = 3, k = 2
输出: 6
解释:
可能的涂色方式如下:
1. 红 红 蓝
2. 红 蓝 红
3. 红 蓝 蓝
4. 蓝 蓝 红
5. 蓝 红 蓝
6. 蓝 红 红

题解答案(Swift)

这个题目是动态规划的典型题,我们需要考虑状态转移和子问题的划分。简单来说,我们要区分两种情况:

  • same: 最后两根栅栏颜色相同
  • diff: 最后两根栅栏颜色不同

根据这两个状态,我们可以构造出一个高效的递推公式。

func numWays(_ n: Int, _ k: Int) -> Int {if n == 0 { return 0 }if n == 1 { return k }var same = 0var diff = kvar total = same + difffor _ in 2...n {same = diffdiff = total * (k - 1)total = same + diff}return total
}

题解代码分析

动态规划核心思路

我们用 same 表示前两根栅栏颜色相同的方案数,diff 表示前两根颜色不同的方案数。总方案数就是这两者之和。

递推关系如下:

  • 当前的 same = diff(因为如果前一轮是不同色的,当前这一轮就可以延续相同颜色)
  • 当前的 diff = total * (k - 1)(从上一个状态的所有组合中选择不同的颜色)

我们每轮都更新这两个变量,直到涂完 n 根栅栏。

初始条件

  • n = 1,只有 k 种可能。

  • n = 2,我们可以有:

    • 相同颜色:k(比如红红、蓝蓝)
    • 不同颜色:k * (k - 1)(比如红蓝、蓝红)

示例测试及结果

示例 1:

let result = numWays(3, 2)
print(result)  // 输出: 6

这个结果就跟题目中的例子一致,一共 6 种组合。

示例 2:

let result = numWays(1, 3)
print(result)  // 输出: 3

只有一根栅栏,那就直接从三种颜色里选一种。

示例 3:

let result = numWays(4, 3)
print(result)  // 输出: 66

解释较复杂,但动态规划会自动帮你计算出来所有组合。

时间复杂度

  • O(n)
    我们遍历一遍从 2 到 n,所以时间复杂度是线性的。

空间复杂度

  • O(1)
    我们只用了几个变量,没有额外数组存储,空间复杂度为常数级。

总结

这个问题虽然看起来像是简单的排列组合,但真正下手的时候会发现,不加限制的排列很容易,但加了“不能超过两个相同颜色”的规则后就变得有点挑战性了。

动态规划的好处就是可以把问题拆成更小的部分,一步步向目标推进。在这题中,理解 samediff 这两个状态是关键。

实际场景联系

想象你是个装修师傅,客户让你刷墙,说每面墙可以选择多种颜色,但不希望连续三面墙刷成一样的颜色(太单调了)。你要怎么安排?其实就是这道题!

或者你是个前端开发者,在设计界面时,需要生成用户界面卡片颜色的方案,同样不能让相邻部分颜色一致。解决方法也就是应用这种动态递推模型。


文章转载自:

http://SD0X49pz.kwnnx.cn
http://2gD2k6e8.kwnnx.cn
http://7lzlUoTy.kwnnx.cn
http://mE65aLEW.kwnnx.cn
http://vdaXwH5O.kwnnx.cn
http://xYgDvoTv.kwnnx.cn
http://yvQ242je.kwnnx.cn
http://PBCzAnMG.kwnnx.cn
http://pKPcMuk5.kwnnx.cn
http://U7MGauEL.kwnnx.cn
http://k7fuuq2f.kwnnx.cn
http://yT8GQAT5.kwnnx.cn
http://lOc9mFwn.kwnnx.cn
http://ApbsRTZk.kwnnx.cn
http://NbXdrJZt.kwnnx.cn
http://ldCX3KRS.kwnnx.cn
http://NkGTr8s0.kwnnx.cn
http://ZnETxGLC.kwnnx.cn
http://fxWu31Tm.kwnnx.cn
http://mqmxBgbG.kwnnx.cn
http://Zwbdcfvh.kwnnx.cn
http://DoMHufY8.kwnnx.cn
http://JPxM4ihG.kwnnx.cn
http://9Vipq4G3.kwnnx.cn
http://JqbtM14f.kwnnx.cn
http://I60XInLP.kwnnx.cn
http://P0bRZYMH.kwnnx.cn
http://blENEcef.kwnnx.cn
http://JLZKWtGt.kwnnx.cn
http://AN9zQt6x.kwnnx.cn
http://www.dtcms.com/wzjs/701262.html

相关文章:

  • 睢宁县凌城做网站的目前it行业哪个方向前景最好
  • html5 特效网站云南省城市建设培训中心网站
  • 中国建设网站的证件怎么查询河北城乡和住房建设厅官方网站
  • 网站建设公司排行杭州网站qq 微信分享怎么做的
  • 上海网站建设caiyiduo电子商务专业就业前景如何
  • 南宁建站公司有哪些wordpress网址转跳插件
  • 石河子网站设计icp备案 网站负责人
  • 郑州金水区建设局网站长沙商城网站
  • 关于建设校园网站申请wordpress变更域名插件
  • 关于网站建设公司大全软文代写新闻稿
  • 北京网站建设设计公司浩森宇特废品回收在哪个网站做效果好
  • 企业门户网站源码下载邯郸求职信息网
  • 做电商不不得不知道的网站百度seo点击
  • 网站建设价格gxjzdrjwordpress大学主题修改
  • 网站 别名q网站建设
  • 图片摄影网站企业网站建设心得
  • 安徽网站推广页面跳转的方式有哪些
  • 泰安外贸网站建设公司开发免费app
  • 长春地区网站建设西青做网站
  • 广州建立网站ppt模板大全免费版
  • 外国网站界面做淘客网站用备案吗
  • 网站建设站建设好吗价格低的英文
  • 金融网站模板素材一级造价工程师报名时间2024年
  • 网站建设二公司什么是百度指数
  • 怎么查网站是谁建的宣传型网站建设
  • 济宁网站建设 优化培训嘉兴公司网站模板建站
  • 有没有做软件的外包网站深圳迈瑞医疗器械有限公司官网
  • 蔬莱网站建设广州网站优化快速提升网站排名
  • 深圳网站建设html5阿里云 wordpress 建站 教程
  • 莆田做网站的公司整合营销概念