Yihua's Blog

Work hard and keep simple.

刷题笔记——卡特兰数

LeetCode刷题总结 四

卡特兰数(Catalan Number) 卡特兰数是组合数学中常出现在各种计数问题中的数列。 数列的前几项为1,1,2,5,14,42,132,429,1430,4862。下边几个例子从简单到难得介绍了卡特兰数的各种应用。 经典问题 1. 进出栈的问题 这是个最经典的卡特兰数的问题,n个元素进出栈的序列为1, 2 ,3, ..., n,那么有多少种出栈的顺序。 思路 首先建模,...

刷题笔记——快慢指针

LeetCode刷题总结 三

快慢指针 快慢指针是解决链表问题的常见工具之一,其中快指针和慢指针同时遍历链表,快指针常作为信号工具,总是在慢指针的前面。当快指针发出信号时,通常慢指针所指的就是我们想要的节点。 19M. 移除倒数第n个链表结点。 问题描述:给定链表头,移除倒数第n个链表结点。 我的思路:采用快慢指针,第一个指针快第二个指针n个节点遍历,当第一个指针访问到链表尾部(null)时,第二个指针刚好指向倒...

刷题笔记——滑动窗口

LeetCode刷题总结 二

滑动窗口 滑动窗口一般用来处理寻找某一满足条件的最长/最短子串这样的问题。 滑动窗口的实现方式有很多种,可以用double pointer, Hash Map 和队列。其本质是用队列实现头和尾可移动的窗口,这一类问题总是选择出满足条件的某个最值区间,符合条件的区间始终在窗口区域内。 3M. Longest Substring Without Repeating Characters ...

刷题笔记——异或的用法

LeetCode 刷题总结一

按位异或”^”的用法 对于某些问题,巧用按位异或可以大大提高空间利用率,将某些算法的空间复杂度优化到O(1)。异或运算满足以下性质: 相同的数异或后为0,对每一位和整个数都成立。 符合交换律和结合律。 任何数与0异或结果不变。 231E. Power of 2 判断一个数是否是2的次幂,从传统的角度可以不停的对这个数mod2,从二进制的角度,一个2的次...

LeetCode 刷题记录

思路与坑

LeetCode 刷题记录 本帖子分类记录刷题过程中的思路,经验以及遇到的坑。 I. 线性表(数组+链表) 8M. 字符串中提取整数 问题描述:从一个给定的字符串中提取数字,要求从第一个非空字符开始,如果第一个非空字符不是正负符号或数字则返回0;如果超出int类型的范围(大于INT_MAX或小于INT_MIN)则返回INT_MAX或INT_MIN。 我的思路:很平凡的遍历思想,首先...