你有一个长长的花坛,有的种了,有的没有。然而,相邻的地块不能种花。
给定一个包含 0 和 1 整数组花坛,其中 0 表示空,1 表示非空和一个整数 n,如果可以在花坛里种植,可以在花坛里种植 n 如果一朵新花没有违反相邻花的规则,那就回去吧。 true,否则返回 false .
示例1:为了解决这个问题,我们需要通过花坛,检查每个位置,以确定我们是否可以种植花。如果一个位置是空的(0),两个相邻的位置是空的或边界,我们可以在那里种一朵花。
基本解决方案: 代码:function canplaceflowersbruteforce(flowerbed: number[], n: number): boolean { let count = 0; for (let i = 0; i = n) { return true; } } } } return count >= n; }
由于时间复杂性高,暴力解决方案不是大输入的最佳选择。
优化方案:优化后的解决方案仍将迭代花坛数组,但一旦种植一朵花,它将移动到下一朵花后的位置,以跳过不必要的检查,以确保我们不会种植相邻的花。
代码:function canplaceflowersoptimized(flowerbed: number[], n: number): boolean { let count = 0; let i = 0; while (i = n) { return true; } } return count >= n; }
console.log(canPlaceFlowersBruteForce(1,0,0,0,1), 1)); // true console.log(canPlaceFlowersBruteForce(1,0,0,0,1), 2)); // false console.log(canPlaceFlowersBruteForce(0,0,1,0,0], 1)); // true console.log(canPlaceFlowersBruteForce(0,0,1,0,0], 2)); // true console.log(canPlaceFlowersBruteForce(0,0,1,0,1,0,1], 1)); // false console.log(canPlaceFlowersBruteForce(1,0,0,0,0,0,0,1], 1)); // true console.log(canPlaceFlowersBruteForce(1,0,0,0,0,0,0,1], 2)); // false console.log(canPlaceFlowersBruteForce(0,0,0,0,0,0), 3)); // true console.log(canPlaceFlowersBruteForce(0,0,0,0,0,0), 4)); // false console.log(canPlaceFlowersOptimized(1,0,0,0,0,1], 1)); // true console.log(canPlaceFlowersOptimized(1,0,0,0,0,1], 2)); // false console.log(canPlaceFlowersOptimized(0,0,1,0,0], 1)); // true console.log(canPlaceFlowersOptimized(0,0,1,0,0], 2)); // true console.log(canPlaceFlowersOptimized(0,0,1,0,1,0,1], 1)); // false console.log(canPlaceFlowersOptimized(1,0,0,0,0,0,0,1], 1)); // true console.log(canPlaceFlowersOptimized(1,0,0,0,0,0,0,1], 2)); // false console.log(canPlaceFlowersOptimized(0,0,0,0,0,0), 3)); // true console.log(canPlaceFlowersOptimized(0,0,0,0,0,0), 4)); // false
数组操作:
贪心算法:
模拟问题:
通过练习这些问题和策略,可以提高解决问题的能力,为各种编码挑战做好更好的准备。
以上是Typescriptt 编码编年史:可以放置花卉的详细内容,请多关注其他相关文章!
Typescript 编码年史:花-js教程可以放置
Efficient & Secure Backup & Restoration Guide
长时间中断后重新开始编码-js教程
远程桌面连接迟缓,亟待优化提速!
Redux VS Redux 工具包 && Redux Thunk VS Redux-Saga-js教程
全面检测,服务器端口全扫描,确保安全无死角!
腾讯云香港服务器,无需备案,轻松搭建!
长时间中断后重新开始编码-js教程
Redux VS Redux 工具包 && Redux Thunk VS Redux-Saga-js教程
比较 Python Python教程中的模块化和输入处理(带代码示例)
Go 对比框架的异步编程能力-Golang
从 TypeScript 到 Golang:后端之旅更顺畅-Golang
Go 并发和协程场景中框架的性能-Golang
用于Web开发的C 框架与C 库-C
哪种C 支持跨平台移动开发的框架?-C
C 框架和C 对比图书馆的学习曲线-C
哪种C 最适合开发游戏移动应用的框架?-C
Golang框架的生态系统支持云原生开发所需的技术吗?-Golang
哪种C 该框架提供了最强大的错误处理和日志记录功能?-C