自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (10)
  • 收藏
  • 关注

原创 动态规划 滑动窗口最大值

算法的思想是将输入数组分割成有 k 个元素的块。 若 n % k != 0,则最后一块的元素个数可能更少。开头元素为 i ,结尾元素为 j 的当前滑动窗口可能在一个块内,也可能在两个块中。情况 1 比较简单。 建立数组 left, 其中 left[j] 是从块的开始到下标 j 最大的元素,方向 左->右。为了处理更复杂的情况 2,我们需要数组 right,其中 right[j] ...

2019-07-30 12:06:54 9834

原创 从前序中序遍历或中序后序遍历恢复二叉树

TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { //剑指Offer 第2版 64页 if(preorder.size() == 0 || inorder.size() == 0) return nullptr; retur...

2019-07-29 21:20:16 8643

原创 二叉树的后序遍历相关题目

2019-07-29 21:07:05 8954

原创 动态规划 最小的必要团队 找零钱

典型的背包问题,用位图实现,递推公式dp[x|y] = min(dp[x|y],dp[x] + dp[y])class Solution {public: vector<int> smallestSufficientTeam(vector<string>& req_skills, vector<vector<string>>&a...

2019-07-29 14:48:35 8580

原创 二叉树的前中序遍历 递归和迭代

递归vector<int> inorderTraversal(TreeNode* root) { vector<int> result; //递归方案 inorder(root, result); return result; } void inorder(TreeNode* root, v...

2019-07-27 22:52:58 8812

原创 5道经典深度优先搜索与宽度优先搜索相关题目-火柴棍摆正方形

2019-07-26 11:35:47 8597

原创 5道经典深度优先搜索与宽度优先搜索相关题目-收集雨水

2019-07-26 11:13:19 9479

原创 5道经典深度优先搜索与宽度优先搜索相关题目-词语阶梯

class Solution {public: int ladderLength(string beginWord, string endWord, vector<string>& wordList) { unordered_set<string> dict(wordList.begin(), wordList.end())...

2019-07-25 20:51:25 8946

原创 位运算- 数组中两个数的最大异或值 贪心算法+树或哈希表

贪心规律:二进制下,我们希望一个数尽可能大,即希望越高位上越能够出现“1”,这样这个数就是所求的最大数,这是贪心算法的思想。即我们选择的两个数异或要尽可能让高位为1。方法一:建立一个深度为32的树,从一个数的第31位开始,如果为0则向左子树走,否则向右子树走。最后将数放在叶节点中。在查找时,根据当前的数字,选择和其搭配使异或值最大的数字。即如果该数的某位为1,则需要选择另一个数该位为0,否则只...

2019-07-25 13:55:39 9738

原创 单链表的排序 插入排序 归并排序

插入排序 O(n^2)利用vector来进行插入排序,这里展示了较标准的插入排序leetcode执行16ms的实例1.从链表中的第二个节点和第一个节点比,如果小于,就得插入到链表头,这里可以创建哑头部来简化操作2.从链表中把要插入的节点取出后,从哑头部遍历该插入的位置(由于需要知道待插入位置的前驱,就必须从哑头部开始,并判别其后继的值)ListNode* insertionSort...

2019-07-25 11:34:01 8806

原创 链表找中点-快慢指针

//偶数个节点,slow指向中点右侧,奇数个节点,slow指向中间节点的下一个节点 //ListNode* fast = head; //ListNode* slow = head; //while(fast){ //fast = fast->next; //slow = slow...

2019-07-25 10:48:01 9247

原创 位运算相关题目-比特位计数 关于数字为1比特位数量之间关系的三个恒等式

利用上一节的n&(n-1)的性质:动态规划 + 最高有效位利用已有的计数结果来生成新的计数结果。以二进制形式检查 [0, 3]的范围:可以看出, 2 和 3 的二进制形式可以通过给 0 和 1 的二进制形式在前面加上 1 来得到。类似的,我们可以使用 [0, 3]作为蓝本来得到 [4, 7]。public class Solution { public int[] ...

2019-07-24 20:08:42 8966

原创 位运算相关题目-一些小trick 1bit代表独立数字 求只出现一次的数字 无进位n进制数 n&(-n) Boyer-Moore 投票算法 n&(n-1)

二进制位方法集合的每个元素,都有可以选或不选,用二进制的位来表示,0表示不选,1表示选自。0x1 << nums.size()-1 的每一位就代表了集合中每个元素都选用。这里由于集合中每个元素都不相同,所以可以用二进制位唯一地表示它们。每次循环遍历该数的每位bit的状态可以判别是否加入其所表示的元素。递归回溯的方法见:https://blog.csdn.net/asmartkil...

2019-07-24 11:14:04 8638

原创 哈希表与字符串的相关题目- 使用滑动窗口 无重复字符的最长子串 最小窗口子串

2019-07-21 13:45:39 8585

原创 哈希表与字符串的相关题目-重复的DNA序列

class Solution {public: int returnChar(char c){ switch(c){ case 'A': return 0; case 'C': return 1; ...

2019-07-21 13:42:58 8695

原创 哈希表与字符串的相关题目-词语模式 同字符词语分组

class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { if(strs.empty()) return vector<vector<string>>{}; ...

2019-07-20 21:03:18 8655

原创 4道经典二叉树相关题目-二叉查找树的编码与解码

//宽度搜索class Codec {public: // Encodes a tree to a single string. string serialize(TreeNode* root) { if (!root) return ""; ostringstream os; queue<TreeNode*&...

2019-07-20 14:30:06 8757

原创 二分查找相关题目-旋转数组查找

class Solution {public: int search(vector<int>& nums, int target) { int left = 0, right = nums.size() - 1; while(left <= right){ int mid = left + (...

2019-07-20 12:15:28 8670

原创 有关图的题目-课程安排

2019-07-19 21:02:29 8695

原创 4道经典二叉树相关题目-侧面观察二叉树

class Solution {public: vector<int> rightSideView(TreeNode* root) { vector<TreeNode* > a; vector<int> re; if(!root) return re; a.push_back(ro...

2019-07-19 19:53:53 8794

原创 4道经典二叉树相关题目-路径之和2 最近公共祖先

class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(root == nullptr || root == p || root == q){return root; } TreeNod...

2019-07-18 16:40:40 8739

原创 6道经典递归、回溯、分治相关题目-N皇后问题

class Solution {public: vector<vector<string>> result; int** isValid; int* pos; void Sub(int s, int n) { if (s > n) { vector<s...

2019-07-18 10:54:49 8780

原创 6道经典递归、回溯、分治相关题目-生成括号

2019-07-17 21:29:38 8759

原创 6道经典递归、回溯、分治相关题目-求子集1,2 组合数之和2

//另一种想法class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> res; vector<int> out; so...

2019-07-17 18:27:43 8576

原创 二分查找细节详解

编写二分查找的算法代码属于玄学编程,虽然看起来很简单,就是会出错,要么会漏个等号,要么少加个 1(比如不等号是否应该带等号,mid 是否应该加一等等。)。不要气馁,因为二分查找其实并不简单。看看 Knuth 大佬(发明 KMP 算法的那位)怎么说的:Although the basic idea of binary search is comparatively straightforward,...

2019-07-16 22:04:42 20490 10

原创 7道经典贪心算法相关题目-移除k个数字

2019-07-14 11:56:56 8661

原创 7道经典贪心算法相关题目-摇摆序列

2019-07-13 21:32:52 8732

原创 7道经典贪心算法相关题目-分糖果

2019-07-13 20:25:37 9819

原创 8道链表常考题-一次遍历删除链表倒数第N个节点

可以使用两个指针而不是一个指针。第一个指针从列表的开头向前移动 n+1 步,而第二个指针将从列表的开头出发。现在,这两个指针被 nn 个结点分开。我们通过同时移动两个指针向前来保持这个恒定的间隔,直到第一个指针到达最后一个结点。此时第二个指针将指向从最后一个结点数起的第 n 个结点。我们重新链接第二个指针所引用的结点的 next 指针指向该结点的下下个结点。public ListNode re...

2019-07-13 14:32:25 8837

原创 7道经典栈、队列、堆的题目-简单计算器

class Solution {public: void compute(std::stack<unsigned int> &number_stack, std::stack<char> &operation_stack){ if (number_stack.size() < 2){ return; } ...

2019-07-12 19:55:36 9163

原创 7道经典栈、队列、堆的题目-包含min函数的栈 合法出栈序列

一个变量无法完成记录栈中所有状态下的最小值。

2019-07-12 16:35:49 8524

原创 7道经典栈、队列、堆的题目-使用队列实现栈,栈实现队列

栈是一种 后进先出(last in - first out, LIFO)的数据结构,栈内元素从顶端压入(push),从顶端弹出(pop)。一般我们用数组或者链表来实现栈,但是这篇文章会来介绍如何用队列来实现栈。队列是一种与栈相反的 先进先出(first in - first out, FIFO)的数据结构,队列中元素只能从 后端(rear)入队(push),然后从 前端(front)端出队(p...

2019-07-12 15:19:50 9550

原创 8道链表常考题-排序链表归并

https://leetcode-cn.com/problems/merge-k-sorted-lists//** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(...

2019-07-12 11:12:02 8555

原创 8道链表常考题-复杂链表的深度拷贝

通过map来保存原链表节点之间的关系,协助创建新链表-》方法一通过map来保存新旧地址的映射,遍历原链表(next或random和next)来创建新的链表-》方法二三leetcode官方解法:https://leetcode-cn.com/problems/copy-list-with-random-pointer/solution/fu-zhi-dai-sui-ji-zhi-zh...

2019-07-11 16:38:45 8598

原创 8道链表常考题-链表划分

LeetCode官方题解本题要求我们改变链表结构,使得值小于 x的元素,位于值大于等于x元素的前面。这实质上意味着在改变后的链表中有某个点,在该点之前的元素全部小于x ,该点之后的元素全部 大于等于x。 我们将这个点记为JOINT。对该问题的逆向工程告诉我们,如果我们在JOINT将改后链表拆分,我们会得到两个更小的链表,其中一个包括全部值小于x的元素,另一个包括全部值大于x的元素。在解...

2019-07-11 12:28:11 8920

原创 8道链表常考题-链表求环

已知链表中可能存在环,若有环返回环起始节点,否则返回NULL。使用set求环起始节点使用快慢指针

2019-07-07 18:07:29 8798

原创 8道链表常考题-链表求交点

已知链表A的头节点指针headA,链表B的头节点指针headB,两个链表相交,求两链表交点对应的节点。使用set求交集1.遍历链表A,将A中节点对应的指针(地址),插入set2.遍历链表B,将B中节点对应的指针(地址),在set中查找,发现在set中的第一个节点地址,即是两个链表的交点。...

2019-07-07 11:28:52 9056

原创 8道链表常考题-链表逆序

单链表的基本操作链表逆序1已知链表头节点指针head,将链表逆序。(不可申请额外空间)迭代法:头插到新链表中复杂度分析时间复杂度:O(n),假设 n 是列表的长度,时间复杂度是 O(n)。空间复杂度:O(1)。递归法:/** * Definition for singly-linked list. * struct ListNode { * in...

2019-07-05 16:16:20 13617

etcd-main依赖包

etcd依赖包

2022-07-06

qttest.rar

博客Qt Creator源码分析系列——UI界面:FancyActionBar类,附带测试的代码。主要是从Qt Creator源代码中剥离出的一些关于界面的代码进行测试和分析。

2020-02-21

信息可视化 交互设计

本书是英国著名信息可视化专家Robert Spence教授的代表作,也是世界范围内信息可视化领域最为经典的教材之一。该书结构清晰,内容丰富,案例翔实,系统地介绍了信息可视化的概念、技术和应用。通过本书的学习,读者可以了解信息可视化的基本概念和知识,同时培养可视化和交互设计的基本技能。

2019-01-21

实时碰撞检测算法技术

本书详细阐述了与碰撞检测问题相关的高效解决方案及相应的数据结构和算法,主要包括:碰撞检测系统中的设计问题、数学和几何学入门、包围体、基本图元测试、层次包围体技术、空间划分、BSP树层次结构、凸体算法、基于GPU的碰撞检测、数值健壮性、几何健壮性以及优化操作。另外,本书还提供了相应的算法、代码以及伪代码,以帮助读者进一步理解计算方案的实现过程。

2019-01-21

嵌入式系统 硬件与软件架构

书中涵盖了嵌入式系统的各个方面,内容分为4个部分:第一部分包括嵌入式系统的基本介绍以及一些必备的知识;第二部分介绍嵌入式硬件,包括处理器、存储器、I/O以及总线;第三部分是关于嵌入式软件的介绍,包括设备驱动、操作系统及中间件和应用软件;第四部分介绍了嵌入式系统的设计与开发。此外,书中还包括大量图和计算机代码,帮助读者理解嵌入式系统的理论知识。

2019-01-18

时间触发嵌入式系统设计模式

时间触发嵌入式系统设计模式 使用8051系列微控制器开发可靠应用

2018-02-04

DVCC-8086实验指导书

DVCC-8086实验指导书 计算机实验箱实验手册及具体电路

2015-07-10

HTML入门教材

入门级别的html教材,帮助新手快速入门

2015-01-25

空空如也

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

TA关注的人

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