- 博客(11)
- 收藏
- 关注
原创 贪心算法(力扣455、376、53)
didi贪心的本质是选择每一阶段的局部最优,从而达到全局最优。将孩子序列和饼干序列排序后进行遍历,大饼干满足大孩子(或小饼干满足小孩子)学习到一个排序函数:void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));base:指向要排序的数组的首元素的指针;nmemb:数组中元素的个数;size:每个元素的大小比较函数,用于确定元素之间的相对顺序。该函数应该返回一个负数、零或正数,分
2023-11-18 15:17:39
57
1
原创 【栈与队列】力扣20. 有效的括号&1047. 删除字符串中的所有相邻重复项&150. 逆波兰表达式求值
1047. 删除字符串中的所有相邻重复项。150. 逆波兰表达式求值。
2023-09-08 15:09:36
59
1
原创 【栈与队列】力扣232.用栈实现队列&225. 用队列实现栈
用一个队列即可实现,可以将1,2取出重新入队之后弹出3。225. 用队列实现栈。232.用栈实现队列。
2023-08-25 17:26:37
65
1
原创 【字符串】力扣344.反转字符串&541. 反转字符串II&剑指Offer 05.替换空格&151.翻转字符串里的单词&剑指Offer58-II.左旋转字符串
return不能写成ch.toString,因为数组的toString默认返回Object,也就是返回哈希码值,这里应该return new String(数组)先将整个字符串反转后,再按照单词逐个反转,超出时间限制。剑指Offer58-II.左旋转字符串。剑指Offer 05.替换空格。151.翻转字符串里的单词。541. 反转字符串II。
2023-08-25 12:31:17
68
1
原创 力扣454.四数相加II&383. 赎金信&15. 三数之和&18. 四数之和
map.getOrdeDefault(key,默认value)若map中含有key值,则为map中的value;注:要对i,j单独去重,不能合在一起。若不含有,则为默认value。454.四数相加II。
2023-08-22 16:52:48
74
1
原创 【哈希算法】力扣242.有效的字母异位词&349. 两个数组的交集 &202. 快乐数&1. 两数之和
349. 两个数组的交集。242.有效的字母异位词。
2023-08-22 13:33:08
42
1
原创 力扣24. 两两交换链表中的节点&19.删除链表的倒数第N个节点& 142.环形链表II
设置一个快指针,一个慢指针,先让快指针向后移动n个节点,再让两个指针共同移动,知道快指针为null,则慢指针指向的就是要删除的节点。但需要知道删除节点的前一个节点,则让快指针多走n+1步,从而慢指针可以指向要删除节点的前一个节点。注意最后返回的是dummyHead.next而不是head,因为head已经改变位置了。也可以把每一个节点都保存,这样逻辑更简单。19.删除链表的倒数第N个节点。24. 两两交换链表中的节点。142.环形链表II。
2023-08-21 17:36:05
18
1
原创 力扣977.有序数组的平方&209. 长度最小的子数组& 59.螺旋矩阵II
原因:没有考虑全加刚好等于target的情况,且用排序的方法,题目要求的是连续子数组,这样做打乱顺序了,是错误的,于是考虑别的方法。即:将元素不停入队,直到大于target为止,再进行出队,直到小于target,再进行入队。代码中使用双指针实现。其中Integer.MAX_VALUE的含义是整数类型的最大值。画图演示,每条边的规律要一样(都左闭右开)即固定开始的数,并逐个相加,直到满足条件。暴力求解法效率较低,容易超时。977.有序数组的平方。
2023-08-14 00:17:52
36
原创 力扣704.二分查找&27移除元素
直接写成(left+right)/2容易造成溢出,可以改写为:left+(right-left)/2。设置左、右标志位,查找到的位置x,将nums[x] 与target进行大小比较,运行之后超时。while条件中不应该为true,而应该为left<right。发现问题:left是0,right是1,就跳不出这个循环了。提交之后出错,检查发现while中应该为<=修改之后还是超出时间限制。
2023-08-09 16:52:05
389
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人