![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
swift
文章平均质量分 62
juejianghuazi
决定开始, 一切都不算晚
展开
-
LeetCode习题:多次搜索
题目描述:给定一个较长字符串big和一个包含较短字符串的数组smalls,设计一个方法,根据smalls中的每一个较短字符串,对big进行搜索。输出smalls中的字符串在big里出现的所有位置positions,其中positions[i]为smalls[i]出现的所有位置。示例:输入: big = "mississippi" smalls = ["is","ppi","hi","sis","i","ssippi"]输出: [[1,4],[8],[],[3],[1,4,7,10],[5]]#原创 2021-06-07 13:51:24 · 166 阅读 · 0 评论 -
实现 Trie (前缀树)
题目描述:Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类* Trie() 初始化前缀树对象。* void insert(String word) 向前缀树中插入字符串 word 。* boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。* boolean原创 2021-06-07 13:50:40 · 132 阅读 · 1 评论 -
LeetCode习题:根据前序和后序遍历构造二叉树
题目描述:返回与给定的前序和后序遍历匹配的任何二叉树。pre 和 post 遍历中的值是不同的正整数示例:输入:pre = [1,2,4,5,3,6,7], post = [4,5,2,6,7,3,1]输出:[1,2,3,4,5,6,7]提示:1 <= pre.length == post.length <= 30pre[] 和 post[] 都是 1, 2, …, pre.length 的排列每个输入保证至少有一个答案。如果有多个答案,可以返回其中一个。题解:递归(以下解原创 2021-05-30 22:45:25 · 236 阅读 · 1 评论 -
LeetCode习题:路径总和 III
题目描述:给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是[-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 10 / \ 5 -3 / \ \ 3 2 11 / \原创 2021-05-30 22:44:39 · 145 阅读 · 0 评论 -
LeetCode习题:特定深度节点链表
题目描述:给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。示例:输入:[1,2,3,4,5,null,7,8] 1 / \ 2 3 / \ \ 4 5 7/8输出:[[1],[2,3],[4,5,7],[8]]题解:广度遍历解题思路:基于一层层遍历,然后把每一层结果存入链表即可解题语言: Swift/** * Definition原创 2021-05-16 23:50:29 · 104 阅读 · 0 评论 -
LeetCode习题:二叉树中和为某一值的路径
题目描述:输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 target = 22 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回: [ [5,4,11,2], [5,8,4,5] ]提示: 节点总数 <= 10原创 2021-05-16 23:45:01 · 164 阅读 · 0 评论 -
LeetCode习题:二叉树的最近公共祖先
题目描述:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”####例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例:例1: 输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 输出: 3 解原创 2021-05-09 23:54:26 · 147 阅读 · 0 评论 -
LeetCode习题:寻找旋转排序数组中的最小值
题目描述:已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]] 。给你一个元素值 互不相同 的数组原创 2021-05-02 23:47:27 · 116 阅读 · 0 评论 -
LeetCode习题:寻找峰值
题目描述:峰值元素是指其值大于左右相邻值的元素。给你一个输入数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞ 。示例:例1 输入:nums = [1,2,3,1] 输出:2 解释:3 是峰值元素,你的函数应该返回其索引 2。例2 输入:nums = [1,2,1,3,5,6,4] 输出:1 或 5 解释:你的函数可以返回索引 1,其峰值元素为 2; 或者返回索引原创 2021-05-02 23:44:29 · 172 阅读 · 0 评论 -
LeetCode习题:动物收容所
题目描述:动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。请创建适用于这个系统的数据结构,实现各种操作方法,比如enqueue、dequeueAny、dequeueDog和dequeueCat。允许使用Java内置的LinkedList数据结构。enqueue方法有一个animal参数,anima原创 2021-04-24 23:25:07 · 113 阅读 · 0 评论 -
LeetCode习题:接雨水
题目描述:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例:例1 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 例2 输入:height = [4,2,0,3,2,5] 输出:9提示:n == height.length0 <原创 2021-04-24 23:24:26 · 128 阅读 · 0 评论 -
LeetCode习题:排序链表
题目描述:给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?示例:例1:输入:head = [4,2,1,3]输出:[1,2,3,4]例2:输入:head = [-1,5,3,4,0]输出:[-1,0,3,4,5]例3:输入:head = []输出:[]提示:链表中节点的数目在范围 [0, 5 * 104] 内-10^5 <= Node.val <=原创 2021-04-18 21:55:44 · 107 阅读 · 0 评论 -
LeetCode习题:汉诺塔问题
题目描述:在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:(1) 每次只能移动一个盘子;(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。你需要原地修改栈。示例:例1 输入:A = [2, 1, 0], B = [], C = [] 输出:C =原创 2021-04-18 21:55:05 · 634 阅读 · 0 评论 -
LeetCode习题:队列的最大值
题目描述:请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例:例1:输入: ["MaxQueue","push_back","push_back","max_value","pop_front","max_value"][[],[1],[2],[],[],[]]输出: [null,null,null,2,1原创 2021-04-01 11:10:21 · 132 阅读 · 0 评论 -
LeetCode习题:滑动窗口的最大值
题目描述:给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 3 1 3 [-1原创 2021-04-01 11:07:24 · 159 阅读 · 0 评论 -
LeetCode习题:计算器
题目描述:给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。表达式仅包含非负整数,+,- ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。示例:例1:输入: "3+2*2"输出: 7例2:输入: " 3/2 "输出: 1例3:输入: " 3+5 / 2 "输出: 5解题思路:双栈计算。创建两个栈结构,分别用于保存数字和运算符,遍历字符串时,遇到运算符,将当前运算符与运算符栈的栈顶进行优先级比较,如果栈顶运原创 2021-03-25 14:44:59 · 273 阅读 · 0 评论 -
LeetCode习题:每日温度
题目描述: 请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。示例:给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100原创 2021-03-25 14:44:02 · 149 阅读 · 0 评论 -
LeetCode习题:两数相加
题目描述:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:例1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.例2:输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]输出:[8,9,9,9,0,0,0,1]原创 2021-03-18 09:47:30 · 74 阅读 · 0 评论 -
LeetCode习题:反转链表
题目描述:反转一个单链表。示例:输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL来源: 力扣(LeetCode) 链接题解一:双指针解题思路:遍历链表的同时,prev指针保持指向反转后链表的头节点,pcur指针沿着链表移动,移动的同时,将pcur当前指向的节点插入到prev之前,prev重新指向最新头结点,pcur继续移动,直到链表尾部结束/** * Definition for si原创 2021-03-18 09:16:37 · 131 阅读 · 0 评论 -
LeetCode习题:重新排列字符串
题目描述:给你一个字符串 s 和一个 长度相同 的整数数组 indices 。请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。返回重新排列后的字符串。来源: 力扣(LeetCode) 链接示例:输入:s = “aiohn”, indices = [3,1,4,2,0], 输出:“nihao”解题思路:使用一个与原字符串相同长度的字符数组,遍历字符串,以其对应的数字为该字符在新数组中的对应下标将其保存到新数组中,遍历完成将字符数组转换为字符串class Sol原创 2021-03-11 10:31:27 · 243 阅读 · 0 评论 -
Swift学习笔记之无限轮播图的三种实现方式
Swift学习笔记之无限轮播图的三种实现方式先上效果实现思路:第一种: 在原图片集合的基础上, 分别在原数据的开始及结尾处插入一张图片, 内容分别是原图片集合的最后一张和第一张, 新图片集合.count = 原图片集合.count + 2; 当滑动到第一张或者最后一张图片时, “偷偷地”将当前偏移位置切换到对应图片的位置(展示第一张图片或者最后一张图片的ImageView所在位置), 详见下图:核心原创 2017-08-01 17:13:49 · 377 阅读 · 0 评论