![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Swift
huanglinxiao
个人爱好学习,性格外向,爱好交友,呵呵
展开
-
Swift: 根据网络请求的结果值来执行其他的事件
我们经常会遇到这样的需求:需要拿到网络请求完成后的值来判断或者计算一些事情。但是网络请求又是异步的,所以这个时候我们就可以借助闭包这个概念来解决这个问题。申明函数://finished: (参数)->(返回值) func loadData(finished: (_ str:String)->(),failed: ()->()) { let a = a...原创 2019-01-07 10:48:12 · 646 阅读 · 0 评论 -
Swift:常用宏
//屏高let kScreenHeight = UIScreen.main.bounds.size.height//屏宽let kScreenWidth = UIScreen.main.bounds.size.width//iPhonex以上判断let IS_IPhoneX_All = (kScreenHeight == 812 || kScreenHeight == 896)...原创 2019-01-07 10:55:55 · 1160 阅读 · 0 评论 -
Swift 两种办法用来解决你在使用类的属性时所遇到的循环强引用问题: 弱引用 无主引用
解决实例之间的循环强引用Swift 提供了两种办法用来解决你在使用类的属性时所遇到的循环强引用问题:弱引用 无主引用弱引用和无主引用允许循环引用中的一个实例引用另外一个实例而不保持强引用。这样实例能够互相引用而不产生循环强引用。对于生命周期中会变为nil的实例使用弱引用。相反的,对于初始化赋值后再也不会被赋值为nil的实例,使用无主引用。弱引用实例class Module...原创 2019-05-07 13:50:16 · 439 阅读 · 0 评论 -
swift 算法 简单9.移除元素
给定一个数组 nums和一个值 val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两...原创 2019-06-12 14:53:04 · 450 阅读 · 0 评论 -
swift 算法 简单10.实现 strStr() 函数。
给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回-1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needle = "bba"输出: -1解法:...原创 2019-06-12 14:54:15 · 131 阅读 · 0 评论 -
swift 算法 简单11.搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1解法: func searchInsert(_ nums: [Int], _ target: Int) -> ...原创 2019-06-12 14:55:06 · 148 阅读 · 0 评论 -
swift 算法 简单 12.最大子序和
给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。解法:func maxSubArray(_ nums: [Int]) -> Int { var sum = 0 ...原创 2019-06-12 14:55:52 · 114 阅读 · 0 评论 -
swift 算法 简单13.最后一个单词的长度
给定一个仅包含大小写字母和空格' '的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5解法:func lengthOfLastWord(_ s: String) -> Int { var array : Array ...原创 2019-06-12 14:56:43 · 167 阅读 · 0 评论 -
swift 算法 简单14.加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。解...原创 2019-06-12 14:57:35 · 252 阅读 · 0 评论 -
swift 算法 简单15.x 的平方根
实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。解法: func mySqrt(_ x: Int) ...原创 2019-06-14 08:48:55 · 1451 阅读 · 0 评论 -
swift 算法 简单16.爬楼梯
假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶...原创 2019-06-14 08:50:35 · 265 阅读 · 0 评论 -
swift 算法 简单17.合并两个有序数组
给定两个有序整数数组nums1 和 nums2,将 nums2 合并到nums1中,使得num1 成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n。你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = ...原创 2019-06-14 08:51:27 · 402 阅读 · 0 评论 -
swift 算法 简单18.相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...原创 2019-06-14 08:52:27 · 145 阅读 · 0 评论 -
swift 算法 简单19.对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3解法:/** * Definition for...原创 2019-06-14 08:53:17 · 161 阅读 · 0 评论 -
swift 算法 简单20.二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。解法:/** * Definition for a binary tr...原创 2019-06-14 08:54:10 · 190 阅读 · 0 评论 -
swift 算法 简单21.二叉树的层次遍历 II
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]解法:/** * Definiti...原创 2019-06-14 08:55:00 · 364 阅读 · 0 评论 -
swift 算法 简单22. 将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / /-10...原创 2019-06-14 08:55:47 · 181 阅读 · 0 评论 -
swift 算法 简单23.平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4...原创 2019-06-14 08:56:30 · 321 阅读 · 0 评论 -
swift 算法 简单24.二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.解法:/** * Definition for a binary tre...原创 2019-06-14 08:57:11 · 169 阅读 · 0 评论 -
swift 算法 简单45.存在重复元素II
给定一个整数数组和一个整数k,判断数组中是否存在两个不同的索引i和j,使得nums [i] = nums [j],并且 i 和 j的差的绝对值最大为 k。示例1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [1,2,3,1,...原创 2019-06-19 08:55:40 · 221 阅读 · 0 评论 -
swift 算法 简单46.翻转二叉树
翻转一棵二叉树。示例:输入: 4 / \ 2 7/ \ / \1 3 6 9输出: 4 / \ 7 2/ \ / \9 6 3 1解法:/** * Definition for a binary tree node. * public class TreeNode { ...原创 2019-06-19 08:56:29 · 168 阅读 · 0 评论 -
swift 算法 简单47.2的幂
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例1:输入: 1输出: true解释: 20= 1示例 2:输入: 16输出: true解释: 24= 16示例 3:输入: 218输出: false解法: func isPowerOfTwo(_ n: Int) -> Bool { i...原创 2019-06-19 08:57:14 · 128 阅读 · 0 评论 -
swift 算法 简单48.回文链表
请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true解法:/** * Definition for singly-linked list. * public class ListNode { * public var val: Int * ...原创 2019-06-19 08:58:15 · 216 阅读 · 0 评论 -
swift 算法 简单49.有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false解法: func isAnagram(_ s: String, _ t: String) -> Bool { ...原创 2019-06-19 08:59:36 · 271 阅读 · 0 评论 -
swift 算法 简单50.二叉树的所有路径
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明:叶子节点是指没有子节点的节点。示例:输入: 1/ \2 3\ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3解法:/** * Definition for a binary...原创 2019-06-19 09:00:22 · 136 阅读 · 0 评论 -
swift 算法 简单51.各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于2 是一位数,所以返回 2。解法: func addDigits(_ num: Int) -> Int { var num = num v...原创 2019-06-19 09:01:14 · 571 阅读 · 0 评论 -
swift 算法 简单52.丑数
编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数2, 3, 5的正整数。示例 1:输入: 6输出: true解释: 6 = 2 ×3示例 2:输入: 8输出: true解释: 8 = 2 × 2 ×2示例3:输入: 14输出: false解释: 14 不是丑数,因为它包含了另外一个质因数7。说明:1是丑数。输入不会超过 32 位有...原创 2019-06-19 09:01:56 · 190 阅读 · 0 评论 -
swift 算法 简单53.缺失数字
给定一个包含 0, 1, 2, ..., n中n个数的序列,找出 0 .. n中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例2:输入: [9,6,4,2,3,5,7,0,1]输出: 8解法: func missingNumber(_ nums: [Int]) -> Int { var nums = n...原创 2019-06-19 09:02:39 · 149 阅读 · 0 评论 -
swift 算法 简单54.移动0
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。解法: func moveZeroes(_ nums: inout [Int]) { for (index,...原创 2019-06-19 09:03:20 · 153 阅读 · 0 评论 -
swift 算法 简单1.两数之和
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解法:多...原创 2019-06-10 14:31:47 · 268 阅读 · 0 评论 -
swift 算法 简单2.整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231,231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解法: ...原创 2019-06-10 14:33:59 · 276 阅读 · 0 评论 -
swift 冒泡排序
func sortArray(_ nums: [Int], _ target: Int) -> (Void) { var nums = nums for i in 0..<nums.count { for j in 0..<nums.count-i-1{ if(nums[j]>nums...原创 2019-06-10 14:37:32 · 508 阅读 · 0 评论 -
swift 算法 简单55.单词规律
给定一种规律 pattern和一个字符串str,判断 str 是否遵循相同的规律。这里的遵循指完全匹配,例如,pattern里的每个字母和字符串str中的每个非空单词之间存在着双向连接的对应规律。示例1:输入: pattern = "abba", str = "dog cat cat dog"输出: true示例 2:输入:pattern = "abba", ...原创 2019-06-20 08:43:21 · 147 阅读 · 0 评论 -
swift 算法 简单56.Nim 游戏
你和你的朋友,两个人一起玩Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3...原创 2019-06-20 08:44:14 · 155 阅读 · 0 评论 -
swift 算法 简单57.3的幂
给定一个整数,写一个函数来判断它是否是 3的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false解法: func isPowerOfThree(_ n: Int) -> Bool { var n = n ...原创 2019-06-20 08:45:29 · 176 阅读 · 0 评论 -
swift 算法 简单58.4的幂
给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4的幂次方。示例 1:输入: 16输出: true示例 2:输入: 5输出: false解法: func isPowerOfFour(_ num: Int) -> Bool { var num = num guard num > 0 e...原创 2019-06-20 08:46:09 · 222 阅读 · 0 评论 -
swift 算法 简单59.反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:...原创 2019-06-20 08:46:50 · 723 阅读 · 0 评论 -
swift 算法 简单60.反转字符串中的元音字母
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: "hello"输出: "holle"示例 2:输入: "leetcode"输出: "leotcede"说明:元音字母不包含字母"y"。解法:func reverseVowels(_ s: String) -> String { var ss = Array(s) ...原创 2019-06-20 08:47:42 · 142 阅读 · 0 评论 -
swift 算法 简单61.两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。解法: func intersection(_...原创 2019-06-20 08:48:22 · 1524 阅读 · 0 评论 -
swift 算法 简单 62.两个数组的交集II
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。解法: ...原创 2019-06-20 08:49:05 · 627 阅读 · 0 评论