动态规划
一些算法举例
动态规划
Triangle
给定一个三角形数组,找到从上到下最小的sum的路径
示例:
[2]
[3, 4]
[6, 5, 7]
[4, 1, 8, 3]
最小的path sum is 11(i.e. 2+3+5+1=11)
解析
暴力法
采用递归的方式:走到最后一行最后一个元素肯定是它肩部走过来的,也就是它left肩orright肩
代码如下:
/*
*给定一个三角形数组,找到从上到下最小的sum的路径
*[2]
*[3, 4]
*[6, 5, 7]
*[4, 1, 8, 3]
*最小的path sum is 11(i.e. 2+3+5+1=11)
*/
func min...
杂项算法
一些算法举例
杂项
产生不重复的随机数
思路
设想一下,有n个苹果,有不同的编号,从1-n,每次拿一个出来。来产生不同的随机数
实现
func randomNumberWithoutDuplication(_ number: Int) -> [Int] {
var resultArr = Array(repeating: 0, count: number)
var startArr = Array(1...number)
for i in 0..<startArr.count {
let currentCount = UInt32(startArr.count-i)
let index = Int(arc4rando...
树算法
一些算法举例
树
树是最常用且非常有用的数据结构之一,通过下图可以很容易理解树的概念。
上图展示的是一个拥有5个层级数的树结构。树根root是第0层,从树最外层开始每深入一层,其层级树相应的减1。
树能帮你解决很多问题,包括:
表示对象的层级关系
使查询快速高效
能提供有序的数据链
文本的前缀匹配搜索
swift构造树
class TreeNode<T> {
var value: T
var children: [TreeNode] = []
weak var parent: TreeNode?
init(value: T) {
self.value = value
}
...
字符串算法
一些算法举例
字符串
复原IP地址
给定一个只包含数字的字符串,复原它并返回所有可能的IP地址格式。
有效的IP地址正好由四个整数(0到255之间组成),整数之间用’.’分隔。
示例
输入: "25525511135"
输出:["255.255.11.135", "255.255.111.35"]
思路
回溯法
1、一开始,字符串的长度小于 4 或者大于 12 ,一定不能拼凑出合法的 ip 地址(这一点可以一般化到中间结点的判断中,以产生剪枝行为);
2、每一个结点可以选择截取的方法只有 3 种:截 1 位、截 2 位、截 3 位,因此每一个结点可以生长出的分支最多只有 3 条分支;
根据截取出来的字符串判断是否是合理的 ip 段,这里写法比较多...
排序算法
一些算法举例
排序算法
首先看一张图:
这里就不多解释了,下面抽几个排序简单讲下。
成功
信息
Warning Text.
Error Text.
success info warning error
冒泡排序
算法步骤
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一队到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
动图演示
代码实现:
func bubleSort(source: inout [Int]) -> [Int] {
pri...
开发过程中的UI差异(flutter版)
开发过程中的UI差异(flutter版)
一个App的从无到有一定绕不开UI的还原问题,通常有设计师设计好根据时下主流的机型产出UI稿交于开发人员去还原视觉稿。比如设计稿的规范为:375(width)667(height)。通常开发人员按照设计稿设置的控件(10040)以及字体fontSize:18。但是经常会有设计师来说,怎么Android和iOS上面的表现形式不一样呢?或者怎么oppo上面的字号显得比较大呢?其实,底层逻辑都是由于物理设备到开发语言的映射差异化导致的。
原理介绍
几个名词
屏幕尺寸
屏幕尺寸(screen size),是屏幕的对角线长度,一般讲的大小单位都是英寸。
DPI (dots per inch)
dpi 是(英文Dots Per Inch)...
共计 25 篇文章,4 页。