自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

phil的博客

行百里者半九十

  • 博客(104)
  • 资源 (2)
  • 收藏
  • 关注

原创 第19周 算法思想 搜索(BFS&DFS)

文章目录BFS最短单词路径(输出所有路径)到离得最近的0的距离DFS查找最大的连通面积填充封闭区域最短单词路径(输出所有路径) 126. Word Ladder II(Hard)到离得最近的0的距离 542. 01 Matrix(Medium)查找最大的连通面积 695. Max Area of Island(Medium)填充封闭区域 130. Surrounded Regions(Medium)BFS最短单词路径(输出所有路径)把对节点的BFS转换为对路径的DFS,依然可以用层次遍历的

2021-10-23 17:08:02 971

原创 第18周 算法思想-搜索(BFS)

文章目录BFS计算在网格中从原点到特定点的最短路径长度组成整数的最小平方数数量最短单词路径BFS 计算在网格中从原点到特定点的最短路径长度 1091. Shortest Path in Binary Matrix(Medium) 组成整数的最小平方数数量 279. Perfect Squares(Medium) 最短单词路径127. Word Ladder(hard)总结:BFS通常比较适用于寻找最短路径,这三道题都是采用的类似层次遍历的写法,这样就不用把路径长度信息存入节点信息中。计算在网

2021-10-16 10:05:40 168

原创 第17周 算法思想-二分搜索

算法思想-二分查找二分查找应用场景:寻找一个数、寻找满足条件的某个区间的左侧边界、寻找满足条件的某个区间的右侧边界建议学习:二分查找详解二分查找的基本框架int binarySearch(vector<int> nums, int target){ int lo=..., hi=...; // 初始化:搜索的边界 while(...){ // 终止条件:区间为空时则停止搜索 int mid = lo + (hi - lo) / 2;

2021-09-25 16:41:38 179

原创 第16周 算法思想-贪心

算法思想-贪心利用贪心思想解题的最大难点在于证明贪心的选择是最优的。常用的证明方法:反证法、数学归纳法 不重叠的区间个数 435. Non-overlapping Intervals(Medium) 投飞镖刺破气球452. Minimum Number of Arrows to Burst Balloons(Medium) 根据身高和序号重组队列 406. Queue Reconstruction by Height(Medium) 修改一个数成为非递减数组665. Non-decreasing

2021-09-19 21:32:11 104

原创 第15周 数据结构-图

文章目录数据结构-图简答总结:判断是否为二分图判断是否可能为二分图拓扑排序:课程安排的合法性课程安排的顺序冗余连接,并查集联通分量的个数找安全节点相似字符串组数据结构-图 判断是否为二分图 785. Is Graph Bipartite?(Medium) 判断是否可能为二分图 886. Possible Bipartition(Medium) 拓扑排序:课程安排的合法性 207. Course Schedule(Medium) 课程安排的顺序 210. Course Schedule II(M

2021-09-10 19:44:59 90

原创 第14周 数据结构-数组与矩阵

文章目录数据结构-数组与矩阵有序矩阵查找有序矩阵的 Kth Element找出数组中重复的数,数组值在 [1, n] 之间数组相邻差值的个数对角元素相等的矩阵嵌套数组分隔数组数据结构-数组与矩阵 有序矩阵查找240. Search a 2D Matrix II 有序矩阵的 Kth Element 378. Kth Smallest Element in a Sorted Matrix 找出数组中重复的数,数组值在 [1, n] 之间 287. Find the Duplicate Number(

2021-09-03 19:26:58 84

原创 第14周 数据结构-字符串

文章目录数据结构-字符串字符串翻转两个字符串包含的字符是否完全相同计算一组字符集合可以组成的回文字符串的最大长度字符串同构回文子字符串个数统计二进制字符串中连续 1 和连续 0 数量相同的子字符串个数子序列计数最短的回文字符串数据结构-字符串 回文子字符串个数 647. Palindromic Substrings(Medium) 统计二进制字符串中连续 1 和连续 0 数量相同的子字符串个数 696. Count Binary Substrings (Easy) 子序列计数 115. Disti

2021-09-01 17:21:52 69

原创 第13周 周赛记录

1984. Minimum Difference Between Highest and Lowest of K Scores(Easy) 1985. Find the Kth Largest Integer in the Array(Medium) 1986. Minimum Number of Work Sessions to Finish the Tasks(Medium) 1987. Number of Unique Good Subsequences(Hard)1984. Minim..

2021-08-29 19:09:13 212

原创 第12周 数据结构-哈希表

文章目录leetcode题解 数据结构-哈希表数组中两个数的和为给定值判断数组是否含有重复元素最长和谐序列最长连续序列leetcode题解 数据结构-哈希表 数组中两个数的和为给定值 1.Two Sum(Easy) 判断数组是否含有重复元素 217. Contains Duplicate (Easy) 最长和谐序列 594. Longest Harmonious Subsequence(Easy) 最长连续序列 128. Longest Consecutive Sequence (Medium

2021-08-18 10:36:27 66

原创 第11周 数据结构-栈和队列

文章目录用栈实现队列用队列实现栈最小值栈用栈实现括号匹配数组中元素与下一个比它大的元素之间的距离循环数组中比当前元素大的下一个元素 用栈实现队列 232. Implement Queue using Stacks(Easy) 用队列实现栈 225. Implement Stack using Queues(Easy) 最小值栈 155. Min Stack(Easy) 用栈实现括号匹配 20. Valid Parentheses(Easy) 数组中元素与下一个比它大的元素之间的距离 739.

2021-08-12 16:44:37 72

原创 第10周 算法思想-排序

文章目录堆最大的第K个桶排序出现频率最多的 k 个元素按照字符出现次数对字符串排序按颜色进行排序 最大的第K个 215. Kth Largest Element in an Array(Medium) 出现频率最多的 k 个元素 347. Top K Frequent Elements(Medium) 按照字符出现次数对字符串排序 451. Sort Characters By Frequency(Medium) 按颜色进行排序 75. Sort Colors (Medium)堆最大的第K个

2021-08-08 21:43:45 85

原创 第9周 算法思想-双指针

Leetcode 题解 - 双指针文章目录有序数组的 Two Sum两数平方和反转字符串中的元音字符回文字符串归并两个有序数组判断链表是否存在环最长子序列 有序数组的 Two Sum 167. Two Sum II - Input array is sorted(Easy) 两数平方和 633.Sum of Square Numbers(Medium) 反转字符串中的元音字符345. Reverse Vowels of a String(Easy) 回文字符串680. Valid Palindr

2021-07-29 22:14:05 79

原创 第8周 数据结构-树

文章目录在二叉查找树中寻找两个节点,使它们的和为一个给定值在二叉查找树中查找两个节点之差的最小绝对值寻找二叉查找树中出现次数最多的值Trie实现一个 Trie实现一个 Trie,用来求前缀和 在二叉查找树中寻找两个节点,使它们的和为一个给定值653. Two Sum IV - Input is a BST(Easy) 在二叉查找树中查找两个节点之差的最小绝对值530. Minimum Absolute Difference in BST(Easy) 寻找二叉查找树中出现次数最多的值501. Find

2021-07-25 16:58:27 72

原创 第7周 数据结构-树

文章目录二叉树的最近公共祖先从有序数组中构造二叉查找树根据有序链表构造平衡的二叉查找树 二叉树的最近公共祖先 236. Lowest Common Ancestor of a Binary Tree(Medium) 从有序数组中构造二叉查找树 108. Convert Sorted Array to Binary Search Tree(Easy) 根据有序链表构造平衡的二叉查找树 109. Convert Sorted List to Binary Search Tree (Medium)二叉

2021-07-17 16:42:58 71

原创 第6周 数据结构-树

文章目录前中后序遍历非递归实现二叉树的前序遍历非递归实现二叉树的后序遍历非递归实现二叉树的中序遍历BST修剪二叉查找树寻找二叉查找树的第 k 个元素把二叉查找树每个节点的值都加上比它大的节点的值二叉查找树的最近公共祖先非递归实现二叉树的前序遍历 144. Binary Tree Preorder Traversal(Easy)非递归实现二叉树的后序遍历 94. Binary Tree Inorder Traversal(Easy)非递归实现二叉树的中序遍历145. Binary Tree Post

2021-07-10 15:03:09 79

原创 第5周 数据结构-树

文章目录相同节点值的最大路径长度间隔遍历找出二叉树中第二小的节点层次遍历一棵树每层节点的平均数得到左下角的节点 相同节点值的最大路径长度 687. Longest Univalue Path(Medium) 间隔遍历 337. House Robber III(Medium) 找出二叉树中第二小的节点 671. Second Minimum Node In a Binary Tree(Easy) 一棵树每层节点的平均数 637. Average of Levels in Binary Tree(

2021-07-03 17:32:57 82

原创 第4周 数据结构-树

文章目录统计路径和等于一个数的路径数量子树树的对称最小路径统计左叶子节点的和 统计路径和等于一个数的路径数量 437. Path Sum III(Medium) 子树 572. Subtree of Another Tree (Easy) 树的对称 101. Symmetric Tree(Easy) 最小路径 111. Minimum Depth of Binary Tree (Easy) 404. Sum of Left Leaves(Easy)统计路径和等于一个数的路径数量cl

2021-06-26 20:15:52 74 2

原创 第3周 数据结构-树

文章目录递归树的高度平衡树两节点的最长路径翻转树归并两棵树判断路径和是否等于一个数 树的高度 104. Maximum Depth of Binary Tree(Easy) 平衡树 110. Balanced Binary Tree(Easy) 两节点的最长路径 543. Diameter of Binary Tree(Easy) 翻转树 226. Invert Binary Tree(Easy) 归并两棵树 617. Merge Two Binary Trees(Easy) 判断路径和是否等

2021-06-18 10:59:10 69

原创 第2周 数据结构-链表

Leetcode 题解 - 链表文章目录链表部分经验谈交换链表中的相邻结点链表求和回文链表分隔链表链表元素按奇偶聚集 交换链表中的相邻结点 24. Swap Nodes in Pairs(Medium) 链表求和 445. Add Two Numbers II(Medium) 回文链表 234. Palindrome Linked List(Easy) 分隔链表 725. Split Linked List in Parts(Medium) 链表元素按奇偶聚集 328. Odd Even Li

2021-06-11 10:04:25 145 3

原创 第1周 数据结构-链表

Leetcode 题解 - 链表 找出两个链表的交点 160. Intersection of Two Linked Lists (Easy) 链表反转 206. Reverse Linked List(Easy) 归并两个有序的链表 21. Merge Two Sorted Lists(Easy) 从有序链表中删除重复节点 83. Remove Duplicates from Sorted List(Easy) 删除链表的倒数第 n 个节点 19. Remove Nth Node From E

2021-06-02 21:16:46 70

原创 解决面试题思路——画图让抽象问题形象化

这里写自定义目录标题面试题27:二叉树的镜像面试题28:对称的二叉树面试题29:顺时针打印数组面试题27:二叉树的镜像class Solution {public: TreeNode* mirrorTree(TreeNode* root) { if(root != NULL){ TreeNode* temp = root->left; root->left = root->right; r

2020-11-08 18:59:28 535

原创 高质量代码篇——代码的鲁棒性

文章目录面试题22:链表中倒数第k个节点面试题22:链表中倒数第k个节点原题链接/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* getKthFromEnd(L

2020-08-22 20:35:37 351

原创 神经网络优化和优化算法要点总结

    神经网络相比于传统机器学习的最大的特点在于极大地降低了特征提取的难度。但应用过程中仍然存在两个难点:优化困难:神经网络模型往往拟合的是一个非凸函数,难以找到全局最优值点,且现有的模型大多参数较多,模型复杂,训练效率较低。...

2020-08-12 20:20:37 3362

原创 判断链表是否有环并找到环的入口

    本篇博客给出的解法都是在O(1)的空间复杂度内解决问题,O(n)则可直接使用字典将遍历到的链表的结点存储下来,问题迎刃而解。判断是否有环 141. 环形链表    例如上图这样的一个链表,图中的链表是存在环的,一种解决方法就是使用快慢指针,使用两个指针,均从head出发,慢指针每次走一步,快指针每次走两步,如果链表中存在环则在快慢指针一定会在某个时刻相遇。     为什么一

2020-08-05 21:22:33 187

原创 高质量代码篇——代码的完整性

面试题16:数值的整数次方:原题链接class Solution {public: double myPow(double x, int n) { /* 思路:本题主要考点在于代码的完整性,解题时需要注意尽可能地考虑到边界情况和特例 */ long int Ln = (long int)n; // 注意n的取值范围,为int的最小值时直接乘以-1转为正数会出错 if(abs(x - 0.0) < 0.0000001)

2020-07-30 20:26:25 270

原创 算法和数据操作篇——位运算

面试题15:二进制中1的个数 原题链接class Solution {public: int hammingWeight(unsigned int n) { /* 方法1:n与1做与运算,不断右移,得到1的个数,这样的方法存在的问题是如果输入的是负数且移位后做符号扩展则会死循环 方法2:设置一个flag=1,将flag与n做与运算,不断左移flag,直到flag为0 方法3:将n与n-1做与运算,这样能够将n的最右边的1变为0,不断

2020-07-24 19:40:23 91

原创 算法和数据操作篇——动态规划和贪婪算法

面试题14:剪绳子原题链接class Solution {public: int cuttingRope(int n) { /* 思路:剪长度为n的绳子,第一次剪完后两段绳子长度变为了k和n-k,此时绳子的数量变为了2,满足了题干中的m>1的限制,所以剪完后的两段绳子可以继续剪,也可以不继续剪,取决于怎样能够最终的乘积最大,如果需要继续剪,则子问题和剪长度为n的绳子的求解是一样的,具体三种情况见下面的注释。 时间复杂度 O(n^2) 空间复杂度 O(

2020-07-24 19:20:11 81

原创 算法和数据操作篇——回溯法

面试题12:矩阵中的路径:原题链接class Solution {public: bool has_word(int x, int y, vector<vector<char>>& board, string& word, int index, vector<vector<int>>& mark){ // 从board[x][y]出发,寻找word[index],mark矩阵表示某个位置的字符是否已经被使用

2020-07-19 10:02:30 114

原创 算法和数据操作篇——查找和排序

面试题11:旋转数组的最小数字原题链接class Solution {public: int minArray(vector<int>& numbers) { // 顺序搜索,O(n),没有考虑数组是有序数组旋转后得到的,不够优秀! // 二分搜索,O(log n) int n = numbers.size(); int index1 = 0, index2 = n-1; int mid = in

2020-07-18 19:09:49 115

原创 NLP实践项目五:基于GRU的古诗生成(pytorch实现)

直接看代码:github传送门数据集:古诗数据集1. 数据预处理:将古诗存为上图的格式,每行一首诗,便于使用torchtext读取。2. 模型定义    模型就是一个简单的GRU模型,3. 模型训练和测试    训练过程中如同翻译模型中的teaching forcing,输入是[<start>,x1,x2,...xn][<start>,x_1, x_2, ... x_n][<star

2020-06-20 23:03:45 2967 3

原创 NLP实践项目四:基于Seq2Seq(包含Attention)的机器翻译(pytorch实现)

直接看代码:数据集:随机生成如下形式的日期对,输入是人可以阅读的各种日期形式,输出为正规化的日期形式。参考吴恩达老师网易云深度学习课程作业5。输入输出monday march 7 19831983-03-079 may 19981998-05-0908 jul 20082008-07-089/10/701970-09-101. 数据预处理机器翻译任务需要在输出的句子前后添加一个标签做标志,通常在输出句子开头添加一个<start>标签,末尾

2020-06-17 23:50:57 2148 1

原创 NLP实践项目三:基于BiLSTM-CRF的实体识别(pytorch实现)

直接看代码:github传送门数据集:Conll20031. 数据预处理将txt中的文件读出然后将句子和对应的标签序列存入csv文件中,便于使用torchtext完成数据读取。2. 模型定义上图是BiLSTM的结构图,数据流向由下往上。命名实体识别是一个序列标注任务,也就是对于句子中的每一个单词都有一个对应的标签。对于每一个单词而言,对它的标签的预测其实也就是一个多分类任务,下面通过提问的方式解构这个模型。为什么需要BiLSTM ?:对于单词的多分类任务,最简单的处理方式就是在得到单词对应的词

2020-06-14 11:47:14 3780 6

原创 算法和数据操作篇——递归和循环

面试题10:斐波那契数列原理链接class Solution {public: int fib(int n) { /* 思路:使用a,b,c三个变量,满足关系c=a+b 当前 a b c 下一步 a b c 时间复杂度 O(n) 空间复杂度 O(1) */ int mod = 1000000007;

2020-06-13 21:40:34 125

原创 NLP实践项目二:基于RNN、CNN的文本多分类(pytorch实现)

直接看代码:github传送门数据集:Classify the sentiment of sentences from the Rotten Tomatoes dataset1. 数据预处理本项目实现了两种数据预处理方式,一种是使用pytorch提供的dataset和dataloader实现数据预处理,一种是直接使用torchtext(强烈推荐上手试试)。两种方法的实现过程大体都是一致的,分词、数值化(word --> id)、填充、封装。最后一步是为了在训练过程中直接从迭代器中取出可输入到网络

2020-06-13 11:10:02 4905 1

原创 数据结构篇——栈和队列

面试题9:用两个栈实现队列 原题链接class CQueue { stack<int> sk1, sk2;public: CQueue() { } void appendTail(int value) { sk1.push(value); } int deleteHead() { if(sk2.empty()){ if(sk1.empty())

2020-06-09 19:38:23 116

原创 NLP实践项目一:基于softmax regression的文本多分类

数据集:Classify the sentiment of sentences from the Rotten Tomatoes dataset特征表示:Bag-of-Word,N-gramBag-of-Word:词袋模型,根据语料建立词典vocab,词典中每个单词有一个index,M为词典的大小,将句子表示为一个M维向量,每一维的值对应该索引对应的单词在句子中出现与否或者出现的次数。这种特征表示不考虑单词出现的先后顺序,丢失了重要的语义信息。N-gram:相比于词袋模型,N-gram将N个单词联合

2020-06-07 21:16:19 1964 7

原创 数据结构篇——树

面试题7:重建二叉树原题链接方法1:使用vector存储左右子树的前序、中序遍历结果然后直接递归调用建树函数。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */cla

2020-06-07 19:28:02 195

原创 数据结构篇——链表

面试题6:从后往前打印链表 题目链接/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: vector<int> reversePrint(ListNode* head) {

2020-06-06 20:07:51 87

原创 数据结构篇——字符串

面试题5:替换空格 题目链接char* replaceSpace(char* s){ /* 思路:统计空格数量,为了避免多次复制,从后复制到前,也可从前向后,复制过程中记录已复制空格数量。 时间复杂度 O(n) 空间复杂度 O(n) */ if(s == NULL) return NULL; int blank = 0; for(int i = 0;i < strlen(s); i++){ if(s[i] ==

2020-06-06 19:59:17 148

原创 数据结构篇——数组

一、数组面试题3:数组中重复的数字题目链接class Solution {public: int findRepeatNumber(vector<int>& nums) { /* 思路:遍历数组时将元素逐个归位 时间复杂度 O(n) 空间复杂度 O(1) */ int n = nums.size(); for(int i = 0;i < n; i++){

2020-06-06 19:32:26 93

使用DES算法实现加密解密含详细注释(C++)

使用C++实现DES算法进行加密解密,内含详细注释和加密解密的示例运行。

2019-10-26

Nexys 4 DDR开发板的DDR2 IP核引脚约束文件_

主要用于Nexys 4 DDR开发板的DDR2 IP核引脚约束文件,亲测有效。

2018-11-04

空空如也

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

TA关注的人

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