摘要:
遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。 但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。 常见三种实现哈希表的数据结构:数组 set集合 map映射 下面是set map的 红黑树是一种平衡二叉搜索树,所以key 阅读全文
摘要:
24. 两两交换链表中的节点 分三步走; 1.创建dummyhead 2.三个指针 cur t1 t2 3. cur->next=t2; t1->next=t2->next; t2->t1->next; 最后让cur=t1; 注意最后返回的是dummyhead-》next 而不是head;注意最后d 阅读全文
摘要:
1.增加虚拟头节点,使头节点的移除跟别的移除统一(否则头节点需要让head指针往后移) 2.删除节点的话,注意delete 203.移除链表元素 对链表的操作有点不熟悉 ListNode* DummyHead=new ListNode(0,head); 使用new进行虚拟头节点的创建 删除tmp 删 阅读全文
摘要:
59.螺旋矩阵II 思路: 找模式: 1.从左到右,从上到下,从右到左,从下到上 2.转几圈 3.注意跟二分一样,统一原则 4.注意for里面的循环条件 54.螺旋矩阵 思路:不能套用螺旋矩阵2 如果在此上进行修改,会漏很多情况 动态移动上下边界 注意边界条件,这个需要<=,推一下便知 后面两题前缀 阅读全文
摘要:
T209 长度最小子数组 核心:滑动窗口思想,如何用一个for循环达到两个循环的效果 for(int j=0;j<num.size();j++){ sum+=nums[j];//外层for循环内负责将窗口结束的坐标++; while(sum>=target){ window_length=j-i+1 阅读全文
摘要:
T27 移除元素 注意复习思路 快慢指针: 快指针:指向遍历的元素 慢指针:指向需要替换的元素 实现:slowIndex=0; 通过遍历fastIndex,当target!=nums【fastIndex】,nums【slowIndex++】=nums【fastIndex】; T26 理解快慢指针 n 阅读全文
摘要:
数组 T35 搜索插入位置 1.想清楚边界,是否需要left<=right 2.想清楚如果没有找到的几种情况,有没有遗漏的情况。 3.此题需要注意返回的不可超过边界值。 T34 在排序数组中查找元素的第一个和最后一个位置 1.分析题目: 三种情况: 1.target不在数组大小的范围内 2.在范围内 阅读全文
摘要:
step: 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 需要重做的题:343(整数拆分) 96 (二叉搜索树的种类) 简单题: 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 注意用step一步步来,注意dp【 阅读全文
摘要:
分类:01背包 完全背包 01: 多个物品,每个只有一个,物品有 weight 和value。背包载重有限制,问最多能放多少; 完全:多个物体,每个有无数个 dp[i][j] 的含义:在【0,i】这么多物品中,放入载重为 j 的背包内的最大价值。 物品/载重 载重0 载重1 载重2 载重3 物品0 阅读全文
摘要:
1.vector的构造函数函数原型:1.vector<T> v ; //使用模板类,默认构造函数2.vector(v.begin(),v.end()); //将[v.begin(),v.end())区间中的元素拷贝给本身3.vextor(n,elem); //将n个elem拷贝给本身4.vector 阅读全文