- 博客(14)
- 收藏
- 关注
原创 哈希笔记(七)***
题目: (15)三数之和 版本一,自己想用哈希结构去实现,未能实现 class Solution { public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> result_array; unordered_map<int,int> result_map; int su
2022-03-01 23:31:30
99
原创 哈希笔记(六)map/数组
(383)赎金信 解法一:利用map实现,完全是自己写的 class Solution { public: bool canConstruct(string ransomNote, string magazine) { unordered_map<char, int> result_map; for (int i=0; i < ransomNote.length(); i++){ result_map[ransomNot
2022-03-01 20:48:18
166
原创 哈希表笔记(五)map
题目: (454)四数相加 class Solution { public: int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) { unordered_map<int,int> result_map; int count = 0;
2022-03-01 20:08:44
144
原创 哈希表笔记(四)map
题目(1)两数之和 解法一:暴力法 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { int i,j=0; int nums_size = nums.size(); for(i=0;i<nums_size;i++) { for(j=i+1;
2022-03-01 17:20:08
201
原创 哈希表笔记(三)哈希集合实现快速查找
题目; (202)快乐数 解法一:哈希集合快速搜索 题目给的无限循环的意思就是sum的值会出现重复,形成环形结构。 知识点:(1)数位分离,求平方和 (2)利用哈希集合完成数字是否已经出现在哈希集合中。 如果她不在哈希集合里边,我们应该添加它; 如果在哈希集合中,这意味着我们处在一个循环中,因此返回false class Solution { public: ...
2022-03-01 15:36:56
278
原创 哈希表笔记(二)unordered_set
题目 (349)两个数组的交集 解法一:暴力算法,排序+双指针 class Solution { public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { vector<int> nums3; sort(nums1.begin(), nums1.end()); sort(nums2.begi
2022-03-01 11:37:12
422
原创 哈希表笔记(一)数组实现
数组就是简单的哈希表,但是数组的大小是受限的!需要把字符映射到数组上,也就是对应的哈希索引上。 题目: (242)有效的字母异位词 class Solution { public: bool isAnagram(string s, string t) { int record[26]={0}; //注意初始化数组 for (int i=0; i < s.size(); i++) //哈希思想 r
2022-03-01 11:12:23
229
原创 链表(三)循环链表
题目: (142)循环链表 class Solution { public: ListNode *detectCycle(ListNode *head) { ListNode * fast = head; ListNode * last = head; ListNode * tmp; while(fast != nullptr && fast->next != nullptr){ //注意fast->
2022-02-28 22:41:00
70
原创 链表笔记(二)反转链表
题目: (206)反转链表 方法一:双指针法 自己版本: class Solution { public: ListNode* reverseList(ListNode* head) { ListNode * cur = head->next; //有问题,具体看标准版本,只能初始化为cur = head; ListNode * left = head; ListNode * right = left->next-&
2022-02-28 21:48:51
134
原创 链表笔记(一)
题目: (707)设计链表 自己版本:自己的版本一直报错,未能解决 class MyLinkedList { public: //定义链表结构体 struct ListNode{ int val; ListNode* next; ListNode(int val) : val(val),next(nullptr){} //节点构造函数,注意写法 }; //初始化链表 MyLinkedList() {
2022-02-28 20:25:43
137
原创 数组笔记(四)模拟行为
考察点:本题并不涉及到什么算法,就是模拟过程,但却十分考察对代码的掌控能力。 题目: (59)螺旋矩阵 class Solution { public: vector<vector<int>> generateMatrix(int n) { //int matrix[n][n]; //vector<vector<int>> matrix<n,vector<n,0>>; //
2022-02-27 22:56:00
271
原创 数组笔记(三)滑动窗口
滑动窗口法:所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置。 题目: 209.长度最小的子数组 解法一:暴力解法 自己版本 class Solution { public: int minSubArrayLen(int target, vector<int>& nums) { int num = nums.size(); int min_Length = 0; //后边比较min_Length和temp的值,
2022-02-27 21:34:24
110
原创 数组笔记(二)二分法
经验:有序数组是二分查找的基础,重要看到面试题给出的数组是有序数组,都可以想一想是否可以使用二分查找法。 同时当数组中有重复元素,使用二分查找法返回的元素可能不是唯一的。 题目 (35)搜索插入位置 解法一:暴力解法 classSolution{ public: intsearchInsert(vector<int>&nums,inttarget){ for(inti=0;i<nums.size()...
2022-02-27 17:07:43
100
原创 数组篇笔记(一)双指针的用法
一.双指针 1.用法 双指针法(快慢指针法):通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。 2.优势: 双指针法将时间复杂度O(n^2)的解法优化为 O(n)的解法。 题目: (15)三数之和 (18)四数之和 (27)移除元素 解法一:暴力解法 //时间复杂度:O(n^2) //空间复杂度:O(1) classSolution{ public: intremoveElement(vector<int>&...
2022-02-26 23:14:12
427
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人