Algorithm
本周选择的算法题是:Permutations。
规则
Given an array nums
of distinct integers, return all the possible permutations. You can return the answer in any order.
Example 1:
Input: nums = [1,2,3]
Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
Example 2:
Input: nums = [0,1]
Output: [[0,1],[1,0]]
Example 3:
Input: nums = [1]
Output: [[1]]
Constraints:
1 <= nums.length <= 6
-10 <= nums[i] <= 10
- All the integers of
nums
are unique.
Solution
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
ans = []
self.dfs(nums, [], ans)
return ans
def dfs(self, nums, path, result):
if not nums:
result.append(path)
for index, num in enumerate(nums):
self.dfs(nums[:index] + nums[index+1:], path + [num], result)
Review
Flutter 团队带来了很有诚意的更新!
这是 Flutter 提供的第一个对 Web 支持达到稳定的版本
可在开发阶段检测 Null 错误,提高了安全性
桌面端的稳定版将在今年晚些时候发布,现在是预览版
platform adaptive - 一种可适应各种屏幕大小、输入方式(鼠标,键盘,手势)和设备的能力,文章里提到 Flutter Folio 有此能力,可以在 GitHub 上查看该应用的源码
发布了一个广告 SDK: Google Mobile Ads SDK for Flutter
关于 iOS 的一点小功能
两个新组件 - Autocomplete 和 ScaffoldMessenger
多引擎实例的支持 - 以前只能一个 App 集成一个实例(Flutter Engine),对纯 Flutter 应用来说这不是问题,但在混合开发情况下,你既不能一个 View 对应一个实例 - 这会把内存爆掉,又没有一种有效的方法管理 Flutter、Native 之间的导航状态,这才诞生了 flutter_boost,但后者自身的问题也很多,它甚至还会限制你所使用的 Flutter 版本;Flutter 2 发布后就不存在这个问题了,额外的引擎实例所占用的内存将减少 99% - 180kB,理论上可以做到一个 View 就对应一个 Engine,这样确实就不需要 flutter boost 了
Flutter Fix - 提供了很多工具、插件帮助开发者修复代码中潜在的错误
Flutter DevTools - 更强大了!甚至在 DevTools 运行之前就能检测运行时错误,虽然目前的检测范围只有渲染相关的错误,但 Flutter 团队表示未来会尽可能覆盖到全部类型的错误!除此之外, DevTools 还能检测尺寸过大的图片,并在运行时反转它 - 以便开发者能轻易找到它。还有很多…
更好的 IDE 插件 - 改善了在 Android Studio、IntelliJ 及 VS Code 下的开发体验
DartPad 也增加了对 Flutter 2 的支持
生态 - Flutter 生态下的库、插件也得到广泛的更新,比如 video_player 就合并了大约 30 个 PR
其中我最感兴趣的就是多引擎实例,这将使我们有机会重新思考 Flutter 和 Native 如何结合的问题。至于 platform adaptive,还需要仔细分析是如何实现的,如果对业务方有太高的侵入性就不太合适了。
Tip
要判断页面中是否包括数学符号用 math/tex
还不够,得在加上 \[
的判断。