树算法
一些算法举例
树
树是最常用且非常有用的数据结构之一,通过下图可以很容易理解树的概念。
上图展示的是一个拥有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)...
flutter开发初探
flutter开发初探
作为时下最火的跨端技术,虽然现在才能才入局有点晚的感觉,但是本人是喜欢稳定版的,目前1.22.x也已经官方release了,这篇初探就简单记录下,一枚小白的使用心得和入门吧
国际惯例
摆出这张图,还是简单从整体上来先认识了一下什么是 Flutter,否则容易陷入“盲人摸象”的境地。
Embedder 操作系统适配层,提供线程模型,事件循环模型
Engine:和底层OS无关了,一般是渲染层包括了 Skia 图形绘制库、Dart VM、Text 等,其中 Skia 和 Text 为上层接口提供了调用底层渲染和排版的能力
Framework:是一个用 Dart 实现的 UI SDK,从上之下包括了两大风格组件库(iOS和Android)、基础...
一些相关知识点
对称加密
定义
对称加密是指加密和解密的密匙为同一个,用来加密数据的密匙也可以用来解密
特点
加密速度快,使用简单
对称加密的破解难度是随着钥匙的大小增加而增加的,钥匙越大就越难破解,但是钥匙越大相应的解密的时间也会越长
对称加密的问题
双方都必须先约定好加密规则
秘钥数目难于管理。因为对于每一个合作者都需要使用不同的秘钥,很难适应开放互联网中的大量的合作者交流。
无法适用于陌生的网络的环境,双方都必须是可信任的才可进行。
非对称加密
定义
非对称加密的秘钥是成对的(公钥和私钥)。私钥由自己安全保管不外泄,而公钥则可以发给网络中的任何人。
非对称加密适用这对秘钥中的一个进行加密,而解密则需要另一个秘钥。根据公钥是无法推导出私钥的。
特点...
共计 23 篇文章,3 页。