【Medium】给定一个没有重复数字的序列,返回其所有可能的全排列。
老生常谈,oc block的实现
Block是什么?
一般来说OC上的语法糖,都可以使用 clang --rewrite-objc code.m 让clang 编译为 c 或 c++ ,由此可以窥探这些语法糖的具体实现。例如,oc的block,@autoreleasepool,@synchronized等等
最长有效括号 -- LeetCode[32]
【Hard】给定一个只包含 ‘(‘ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。
oc中@synchronized的性能瓶颈
@synchronized是什么?
一般来说OC上的语法糖,都可以使用 clang --rewrite-objc code.m 让clang 编译为 c 或 c++ ,由此可以窥探这些语法糖的具体实现(但是实际上XCode在编译的时候,并不会有rewrite的这个过程)。例如,oc的block,@autoreleasepool,@synchronized等等
动态库的符号地址绑定
Manacher算法 -- LeetCode[5]
虽然LeetCode上这是一道Medium的题目,题目的解法有很多种。但是其中的最优解,也是本文需要探讨的算法,算是理解难度最高的一种。
拿到这个道题的第一反应,应该是从回文序列的对称中心向两侧看。算出以字符串中每一个字符为中心的最大回文串长度。然后取一个最长的,即为本题解。
在上述算法过程中,会有一部分算法的”冗余”。所谓算法冗余,即是对重复而无意义数据的计算。而Mangcher算法的优化就是去除了重复和无意义计算的部分。
缺失的第一个正整数 -- LeetCode[41]
给定一个未排序的整数数组,找出其中没有出现的最小的正整数,要求O(n)时间,常数空间。