- 博客(16)
- 收藏
- 关注
原创 哈希表映射
哈希表 映射一、题源:1. 两数之和问题描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。二、 思路:哈希表关于哈希表一般使用到的数据结构有 数组 、 set(集合) 、 map(映射) 。之前俩篇文章分别介绍了数组和集合的相关题目,使用数组一般是针对数值大小有限且机制的
2022-05-12 22:44:11
219
原创 哈希表集合
哈希表 集合一、题源:349. 两个数组的交集问题描述给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。二、 思路:哈希表关于哈希表一般使用到的数据结构有 数组 、 set(集合) 、 map(映射) 。之前的一篇文章都是使用数组,但是要注意的是使用数组一般是针对数值大小有限且机制的情况。如果关键值大小限制跨度很大且特别分散,使用数组就造成空间的极大浪费,因此考虑另一种数据结构 set 。C++ 的关
2022-05-09 22:26:34
150
原创 哈希表数组
滑动窗口法一、题源:242. 有效的字母异位词问题描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。二、 思路:1、映射用 unordered_map 可以很方便的实现出现的字母及出现次数的计算。参考代码如下class Solution {public: bool isAnagram(string s, string t) { unor
2022-05-09 21:54:31
1619
原创 环形链表 II
环形链表 II一、题源:142. 环形链表 II问题描述给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递 ,仅仅是为了标识链表的实际情况。不允许修改 链表。二、 思路:1、暴力
2022-05-05 22:05:45
552
原创 链表相交题
滑动窗口法一、题源:209. 长度最小的子数组问题描述给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。二、 思路:1、暴力解法最容易想到的方法就是直接对数组进行遍历,然后再从遍历的位置开始查找符合条件的子数组。时间复杂度:O(n2)O(n^2 )O(n2)空间复杂度:O(1)O(1)
2022-05-05 21:12:20
323
原创 反转链表题
反转链表一、题源:206. 反转链表问题描述给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。二、 思路:1、头插法将这个链表上的结点依次头插到一个新的链表。为了简化头插代码,在新的链表上引入了虚拟头结点参考代码如下struct ListNode* reverseList(struct ListNode* head){ struct ListNode* returnHead = (struct ListNode*)malloc(sizeof(struct List
2022-05-05 10:37:01
568
原创 设计链表(虚拟头节点)
设计链表(虚拟头节点)一、题源:707. 设计链表问题描述设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index): 获取链表中第 index 个节点的值。如果索引无效,则返回 -1 。addAtHead(val): 在链表
2022-05-04 21:56:07
142
原创 虚拟头结点
移除列表元素一、题源:203. 移除列表元素问题描述给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。二、 思路:1、直接操作从头节点开始遍历,判断指针指向的下一个节点值等不等于val,等于的话,执行删除下个节点的操作参考代码如下struct ListNode* removeElements(struct ListNode* head, int val){ struct ListNode*
2022-05-04 21:41:33
747
原创 数组杂项题目
数组杂项题目1. 两数之和问题描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。实现:int* twoSum(int* nums, int numsSize, int target, int* returnSize){ int* result; for(int i =
2022-05-04 11:21:49
52
原创 数组二分法
数组二分法一、题源:704. 二分查找问题描述给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。二、 思路:1、暴力解法最容易想到的方法就是直接对数组进行遍历,对比数组元素与target。时间复杂度:O(n)O(n )O(n)空间复杂度:O(1)O(1)O(1)注:暴力法虽然思路简单,容易想到,但是对于这个问题还有时间复杂度更低的方法2、二分法对于有序不重复的数组
2022-05-04 10:19:31
241
原创 滑动窗口法
典型例题一、题源:209. 长度最小的子数组问题描述给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。二、 思路:1、暴力解法最容易想到的方法就是直接对数组进行遍历,然后再从遍历的位置开始查找符合条件的子数组。时间复杂度:O(n2)O(n^2 )O(n2)空间复杂度:O(1)O(1)O
2022-05-03 18:40:04
1100
原创 Markdown基本语法
工具TyporaMarkdown语法语法操作斜体两边加*粗体两边加**斜体加粗两边加***删除两边加~~引用>空格+内容分割线—或者***图片超链接方括号里面写超链接名,圆括号写超链接有序列表数字.空格+内容无序列表-/+/*空格+内容表格1右击->插入->表格表格2名字|性别|生日+回车±-|–|--|+回车+张三|男|1999.1.1,转源代码模式删去空行代码1··
2021-12-30 01:56:12
207
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人