自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 代码随想录day6 哈希表

这道题关键是想到sum会无限循环,也就是会重复出现,因此用到哈希判断元素是否重复在集合中出现。然后用数组作为哈希表就可以解决了。如果只需要判断元素是否出现过,而不需要考虑key-value映射关系,可以简单地用数组来创建哈希表。目前学到的哈希表的创建方法:1、uthash(leetcode支持)2、数组。函数原型:div_t div(int numer, int denom)当一道题需要快速判断一个元素是否在集合里,就要考虑用哈希法!div_t:头文件中定义的结构体,有quot和rem两个成员。

2024-01-06 04:24:53 411 1

原创 代码随想录day29 回溯算法

序列和组合/子集不同,元素之间的顺序不能改变,因此不能用排序+used的方法来去重。要判断是否重复,需要用数组记录本层选取过的元素,每次取一个元素都要检查其在数组里是否已经存在。另一个问题是需要跳过递减的元素,自然地想到要比较上一个选取的元素和现在的元素。由于无法排序,不能用nums[i-1]和nums[i]比较,可以创建一个栈,比较栈顶元素和该元素。全排列每层循环之所以从0开始,是因为要搜集的是叶子节点均由所有元素组成。因此,想要跳过已经选择过的元素,需要用到used数组来记录。

2024-01-03 05:51:10 403 1

原创 代码随想录day28 回溯算法

不管是组合还是子集,有重复元素:先排序,排序的目的在于让相同的元素相邻。通过比较两个相邻元素是否相等,同时设置used数组记录每个节点的状态(false表示同一层已遍历过,true表示同一树枝),跳过重复的元素。子集需要遍历整棵树,不需要剪枝,也不需要终止条件(终止条件为剩余集合为空,即start>=size,此时本层循环结束,自动终止)思路和之前的字符串分割一样,但是要处理好所有细节并不容易。

2024-01-02 07:36:05 379

原创 代码随想录day27 回溯算法

有重复元素+不可重复选取+组合。无重复元素+可重复选取+组合。

2023-12-31 04:11:23 368 1

原创 代码随想录day24 回溯算法1

该类问题都可以抽象为树形结构,在集合中递归查找子集,深度表示递归次数,宽度表示可选择的集合大小。

2023-12-27 07:41:21 73 1

原创 代码随想录day8 字符串

为了节省空间,可以用到的一个方法是扩充数组,再用双指针倒序遍历,从后往前填充扩容后的数组(因为如果从前往后填充,每填充一次都要将后面的所有元素向后移动,复杂度会编程O(n^2))力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。字符串的翻转在双指针的基础上还有一些技巧,例如先整体反转再局部反转,翻转单词和左/右旋转字符串都用到了这个技巧。这道题就使用到了这种方法,避免了申请新的数组。注意strlen得到的是字符串的大小而不是memory的大小。

2023-12-14 03:59:26 45 1

原创 Day1&Day2 数组专题总结

一、常用方法1、双指针2、滑动窗口涉及求最大/最小子数组或子串时,用一个循环代替两个for循环 右指针表示窗口的终止位置思路i, j指针分别代表窗口的初始位置和终止位置,区间表示为[i,j] 加入j指针指向的数组元素到窗口中——寻找可行解 窗口扩大到满足条件(限制+最大/最小),移动i指针缩小窗口,直到刚好不满足限制——寻找最优解 如求最小覆盖子串,只要窗口内包含了子串相应的字母种类和个数,就满足了条件,需要缩小窗口;而求最大长度,尽可能扩大窗口,直到不满足限制 因此,求最小值时

2023-11-30 06:59:44 61

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除