![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
文章平均质量分 74
无聊的时候刷刷题
朗清风
iOS开发工程师
展开
-
阿里二面
阿里二面实现细节算法实现细节这一次相对于一面来讲,涉及到项目中的技术实现细节更加深入,对于实现的数据分析和逻辑漏斗追问的更加详细,由于时间比较紧张准备不足,这次面试中的技术点交流并不流畅,有些实现细节描述不清,估计会止步于此.算法这次提到最长回文字串的查找,这是一道非常常规的算法题,然而由于过于紧张只记得Manacher算法,但是对于具体的查找实现没能描述清楚,超级尴尬.其实面试官并不要求你会最牛逼的算法,只要有思路即可。比如这样一种实现:// 判断s中索引[i, j]是不是回文序列bool原创 2021-01-11 00:02:04 · 860 阅读 · 1 评论 -
阿里iOS一面
阿里iOS一面电话内容笔试电话内容基本上简历上写的内容都可能会聊到,会针对你擅长的某一个技术点做一些场景问答,所以写在简历上的都要做深入的探究。笔试笔试有两道题,也都相对简单:以下代码输出的内容是什么,为什么?NSString *a = @"test";NSString *b = @"test";if (a ==b) { NSLog(@"Equal");} else { NSLog(@"Not Equal");}对于这题的答案,其实最初感觉字面量会被作为常量常量处理,这部分值原创 2021-01-09 15:53:15 · 194 阅读 · 0 评论 -
block究竟是不是对象?
block究竟是不是对象?blockblock结构block的继承关系结论blockblock是OC中经常使用到的一个实现,其实用更多的时候像是一个函数实现。而事实上,在更多的场景中,block的使用似乎更加接近于对象.那么block究竟是不是对象?block结构在apple开源的代码实现中中,可以看到block的结构:// Values for Block_layout->flags to describe block objectsenum { BLOCK_DEALLOCATI原创 2021-01-09 15:01:54 · 284 阅读 · 0 评论 -
leetCode 2:两数之和
两数之和分析实现算法复杂度其他算法给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 =原创 2021-01-05 19:41:58 · 248 阅读 · 0 评论 -
LeetCode 830: 较大分组的位置
较大分组的位置分析实现算法复杂度时间优化在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。例如,在字符串 s = “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的一些分组。分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 “xxxx” 分组用区间表示为 [3,6] 。我们称所有包含大于或等于三个连续字符的分组为 较大分组 。找到每一个 较大分原创 2021-01-05 16:26:20 · 105 阅读 · 0 评论 -
LeetCode 509: 斐波那契数
斐波那契数分析实现算法复杂度时间复杂度空间复杂度其他算法斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1示例 2:输入:3输出:2解释:F(3) = F原创 2021-01-04 22:51:21 · 107 阅读 · 0 评论 -
LeetCode 1:两数之和
两数之和分析实现算法复杂度分析时间复杂度空间复杂度其他算法给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums原创 2021-01-04 16:32:01 · 113 阅读 · 0 评论 -
LeetCode 86:分割链表
分割链表分析实现算法复杂度时间复杂度空间复杂度给你一个链表和一个特定值 x ,请你对链表进行分隔,使得所有小于 x 的节点都出现在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入:head = 1->4->3->2->5->2, x = 3输出:1->2->2->4->3->5分析单向链表是一种常用的数据结构,一般会定义个一个值域val和一个指向下一个节点的指针域next,形如:// Defin原创 2021-01-03 15:37:32 · 146 阅读 · 0 评论 -
算法的时间复杂度
算法的时间复杂度事后统计法估算代码执行次数对于实现每个开发者都有自己的想法,但并不是每一个算法都会得到很好的应用和推广,受限于运行环境和运行时间的要求,总是会有一些算法虽然也能够得到想要的结果但是终究会被摒弃.而评价一个算法好坏的一个重要标准就是算法的时间复杂度.对于算时间复杂度,总体上会有两种衡量方法:事后统计法对于特性的算法只要使用用例在指定的设备上进行运算就可以获取到算法执行的时间,从而评估算法在执行时间上的优劣.但是这种方法具有明显的缺陷:执行时间严重依赖于硬件以及运行时各种不确定的环境原创 2020-12-21 17:56:21 · 403 阅读 · 0 评论 -
LeetCode 389
找不同计数法差集法异或位运算题目描述给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。计数法因为元素限定了只能是小写字母,是可以枚举的,所以可以使用元素的ascall码作为索引,出现的次数作为索引对应的值来统计元素在s中出现的次数.char *arr = malloc(sizeof(sizeof(char) * 26));for (int index = 0; index < strlen(s)原创 2020-12-18 18:17:47 · 134 阅读 · 1 评论 -
二叉树根序遍历
二叉树树,是一种常用到的数据结构,可以用来模拟具有树状结构性质的数据集合.在树的结构中,每个节点包含一个节点的值和所有节点的列表.从图的观点来看,树也可以看作是一个由N个节点和N-1条边组成的有向无环图。在树中,应用最广泛的是二叉树.正如名字中所描述的一样,二叉树的每个节点最多由两个节点(子树结构),习惯上成为左子树和右子树.二叉树的数据结构一般使用结构体来进行描述struct TreeNode { ValueType val; // 当前节点的值 struct TreeN原创 2020-09-09 16:06:54 · 1794 阅读 · 0 评论 -
找出数组中不是成对出现的元素
题目:假设数组中的元素只有一个不是成对出现的,找出该元素(下标).思路:1. 设置一个辅助数组result,来标记数组中已经被查找的成对元素,防止重复查找;2. 遍历当前数组的元素,针对下标为i的元素:2.1 如果result[i] == 1说明该元素已经被查找过,则跳过;2.2 如果result[i] == 0,查找j > i的所有元素中是否存在nums[i]的成对元素.如果查找到则标记result[j] = 1;若未查找到则该索引i对应的元素即为需要查找的结果..原创 2020-06-29 17:11:18 · 479 阅读 · 2 评论