随笔分类 -  LeetCode

摘要:搞一个结果数组 ,用来存结果,先排序 ,对原数组扫一遍 ,如果原数组中当前元素的左区间值 要比结果数组中的最后一位的右区间 大的话,就将该元素插入进结果数组,此时这种情况是不存在交集。 如果不满足上面的条件,存在交集,进行更新结果数组中最后一位的右区间就可以了。 阅读全文
posted @ 2020-05-07 23:03 Lee先森的博客 阅读(205) 评论(0) 推荐(0)
摘要:贪心算法 阅读全文
posted @ 2020-05-05 22:36 Lee先森的博客 阅读(86) 评论(0) 推荐(0)
摘要:先分别排序,搞两个指针,从头开始对两个数组进行扫描,如果一个小一个大,就让小的往后走。如果相等那就存到结果数组中,然后两个指针同时往后走,循环到有一个遍历完就可以结束。 阅读全文
posted @ 2020-05-05 17:03 Lee先森的博客 阅读(159) 评论(0) 推荐(0)
摘要:搞一个标记数组,模拟扫一遍。 这么写很麻烦,后续还会有优化。 未完待续... 阅读全文
posted @ 2020-05-05 16:07 Lee先森的博客 阅读(108) 评论(0) 推荐(0)
摘要:找最大的周长,也就是$a+b+c$最大,如果三个数要想构成三角形的话,需要$a+b c$。固定$c$端点,使得$a+b$尽可能的大,所以排序扫一遍就ok了。 代码如下: 阅读全文
posted @ 2020-05-04 20:28 Lee先森的博客 阅读(159) 评论(0) 推荐(0)
摘要:求解逆序对问题,首先基础方法就是归并排序,高阶方法可以用树状数组。 首先知道什么叫逆序对:对于一个序列$a$,如果$ia[j]$,则$a[i]$和$a[j]$构成逆序对。归并排序在 合并 的时候可以将求解逆序对作为子问题来求解,如果$a[p1]a[p2]$,那$p1 mid$的所有的值都比$a[p2 阅读全文
posted @ 2020-05-03 22:58 Lee先森的博客 阅读(133) 评论(0) 推荐(0)
摘要:因为出现的都是小写字母,所以最多就有26个,用一个存储26个元素的数组来进行计数,正着扫,反着扫,循环,直到数组的所有位全为0,即可解决问题。 代码如下: 阅读全文
posted @ 2020-05-03 16:35 Lee先森的博客 阅读(123) 评论(0) 推荐(0)
摘要:哈希大法好! 直接上代码 1 typedef struct HashTable { 2 int *data; 3 int *flag; 4 int size; 5 } HashTable; 6 7 HashTable *init(int n) { 8 HashTable *h = (HashTabl 阅读全文
posted @ 2019-06-05 21:00 Lee先森的博客 阅读(171) 评论(0) 推荐(0)
摘要:int trap(int* height, int heightSize) { int ans = 0, top = -1; int *stack = (int *)malloc(sizeof(int) * heightSize); for (int i = 0; i < heightSize; i 阅读全文
posted @ 2019-05-26 17:49 Lee先森的博客 阅读(155) 评论(0) 推荐(0)
摘要:struct Stack { char *val; int top, maxSize; }; void init(struct Stack *s, int maxSize) { s->val = malloc(maxSize); s->top = 0; } bool empty(struct Sta 阅读全文
posted @ 2019-05-18 13:59 Lee先森的博客 阅读(210) 评论(0) 推荐(0)
摘要:利用滑动窗口加二分,其中二分的情况为前面全是1,后面全是0,找最后一个1出现的位置 阅读全文
posted @ 2019-05-11 09:36 Lee先森的博客 阅读(270) 评论(0) 推荐(0)
摘要:直接上代码: double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) { int nums[5000], numsSize = nums1Size + nums2Size; int i = 阅读全文
posted @ 2019-03-14 11:33 Lee先森的博客 阅读(334) 评论(0) 推荐(0)
摘要:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 代码如下: 1 int reverse(int x) { 2 int temp = x, num = 0; 3 while (x) { 4 if (n 阅读全文
posted @ 2019-03-09 16:35 Lee先森的博客 阅读(155) 评论(0) 推荐(0)
摘要:代码如下: 1 /** 2 * Note: The returned array must be malloced, assume caller calls free(). 3 */ 4 int* twoSum(int* nums, int numsSize, int target) { 5 sta 阅读全文
posted @ 2019-03-09 16:27 Lee先森的博客 阅读(276) 评论(0) 推荐(0)