- 博客(114)
- 资源 (8)
- 收藏
- 关注
原创 detectron2 linux 安装记录
detectron2 linux 安装记录记录一下安装 Detectron2 ,即FAIR开源的目标检测算法实现。首先这个库在 Linux 下是比较好安装的,之后看看能不能成功在 WIN10 上。这个问题其实一开始就得考虑好,因为我使用的是实验室设备,用的docker contianer环境,内部有anaconda3环境,里面的 pyyaml 包,它的版本是3.12,然后detectron2需要pyyaml包的版本在 5.1 以上,我不论是用 pip uninstall pyyaml还是conda
2020-09-19 17:26:52 742
原创 leetcode765_情侣牵手_贪心
一. 回溯法1. 回溯法比较容易理解,如果我们每次都能让至少1对情侣坐在一起,那么最终肯定能使所有情侣都坐在一起,但是(x,y)如果而这不是情侣,可以找到x的情侣x1,或者y的情侣y1,但是需要比较二者哪个次数更小。2. 首先变为【0,0,1,1】模式,这样只要比较数值是否相同即可找到情侣。3.回溯,首先判断第p个是不是情侣,如果x==y,是情侣,直接处理下一种情况。4. 如果不是,在p后面找情侣,因为p前面已经处理好了是情侣,分两种情况,找到x情侣,以及找到y情侣,分别交换,并最终看哪..
2020-07-26 11:39:32 207
原创 leetcode_410_分割数组的最大值_dp
1. 题目有点难,不过是一个套路,把数组分为m块的都是动态规划,i和j到底0-m-1还是1-m有点绕晕。class Solution {public: int splitArray(vector<int>& nums, int m) { int n = nums.size(); //dp表示n个数,分成m段,最大值中的最小值 vector<vector<long>> dp(n+1, vector&..
2020-07-26 10:16:05 158
原创 leetcode174_地下城游戏_dp
一. dp, 我自己的方法。 假设dp为每个位置最低需要的血量,初始化为1。可以反着推导dp,设置最右下角,dp[m-1][n-1] = 1;从右下角开始推导到左上角。三种情况:1. 就是右下角,所需最少血量1 - dungeon[i][j],如果小于0,则为1滴血就够了;2. 如果不是最后一列,最低血量为前一格子减去当前,为dp[i][j+1] - dungeon[i][j],并和1比较;3. 如果不是最后一行,也不是最后一列,为右边和下边最小的一个,min(dp[i][j+1],...
2020-07-25 15:59:26 135
原创 leetcode11_盛最多水的容器
1.双指针法. 这种方法背后的思路在于,两线段之间形成的区域总是会受到其中较短那条长度的限制。此外,两线段距离越远,得到的面积就越大。2.如果我们试图将指向较长线段的指针向内侧移动,矩形区域的面积将受限于较短的线段而不会获得任何增加。但是,在同样的条件下,移动指向较短线段的指针尽管造成了矩形宽度的减小,但却可能会有助于面积的增大。class Solution {public:...
2020-04-08 18:05:03 88
原创 leetcode10_正则表达式匹配
1.class Solution {public: bool isMatch(string s, string p) { int len1 = s.length(), len2 = p.length(); vector<vector<int>> dp(len1 + 1, vector<int>(len2 + 1, 0)); ...
2020-04-08 17:10:58 117
原创 leetcode9_回文数_判断整数是否回文数
1. 负数不是.2. 溢出也不是.3. 时间复杂度log(x).class Solution {public: bool isPalindrome(int x) { if(x<0) return false; int sum=0; int oldx = x; while(x){...
2020-04-08 12:05:56 220
原创 leetcode8_字符串转换整数
class Solution {public: int myAtoi(string str) { int k = 0; long number = 0; while (str[k] == ' ') k++; if (str.length() == 0) return 0; if (str[k] != '+' && str[k] != '-' &am...
2020-04-08 11:32:59 104
原创 leetcode7_整数反转
1.溢出前进行检查2.要在没有辅助堆栈 / 数组的帮助下 “弹出” 和 “推入” 数字,我们可以使用数学方法。//pop operation:pop = x % 10;x /= 10;//push operation:temp = rev * 10 + pop;rev = temp;class Solution {public: int reverse...
2020-04-08 10:59:42 93
原创 leetcode6_Z字形变换
class Solution {public: string convert(string s, int numRows) { if (numRows == 1) return s; vector<string> rows(numRows); int curRow = 0; bool goingDown =...
2020-04-08 10:20:24 303
原创 leetcode4_寻找两个有序数组的中位数
1.在统计中,中位数被用来:将一个集合划分为两个长度相等的子集,其中一个子集中的元素总是大于另一个子集中的元素。2. 解法1简单粗暴,先将两个数组合并,两个有序数组的合并也是归并排序中的一部分。然后根据奇数,还是偶数,返回中位数。class Solution {public: double findMedianSortedArrays(vector<in...
2020-04-07 13:27:36 124
原创 leetcode5_最长回文子串
1. 动态规划.2.考虑 “ababa” 这个示例。如果我们已经知道“bab” 是回文,那么很明显,“ababa” 一定是回文,因为它的左首字母和右尾字母是相同的.3.class Solution {public: string longestPalindrome(string s) { int len=s.size(); if(...
2020-04-07 10:43:27 115
原创 leetcode3_无重复字符的最长子串_滑动窗口
class Solution {public: int lengthOfLongestSubstring(string s) { //初始条件 if(s.length()==0) return 0; int left = 0, right = 0; map<char, int> window; ...
2020-04-06 23:18:19 142
原创 leetcode2_两数相加_链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode*...
2020-04-06 23:02:08 180
原创 leetcode1_两数之和_哈希表
//1,普通解法// class Solution {// public:// vector<int> twoSum(vector<int>& nums, int target) {// vector<int> result;// for (int i = 0; i < nums.size()...
2020-04-06 22:55:21 169
原创 写树算法的套路框架(摘抄labuladong大神)
1. 但是这个算法出现了错误,BST的每个节点应该要小于右边子树的所有节点,下面这个二叉树显然不是 BST,但是我们的算法会把它判定为BST。2.出现错误,不要慌张,框架没有错,一定是某个细节问题没注意到。我们重新看一下 BST 的定义,root 需要做的不只是和左右子节点比较,而是要整个左子树和右子树所有节点比较。怎么办,鞭长莫及啊!3. 很简单,其...
2020-03-14 12:48:40 741
原创 leetcode100_相同的树_二叉树
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */c...
2020-03-14 10:46:07 86
原创 leetcode150_逆波兰表达式求值_栈
1. 整体思路,定义数据栈存放数据, 只要遇到运算符就出栈两个数做加减乘除处理.class Solution {public: int evalRPN(vector<string>& tokens) { stack<int> st; for(int i=0;i<tokens.size();i++) { ...
2020-03-14 10:31:50 142
原创 leetcode876_链表的中间节点
一. 迭代.1. 时间O(n), 空间O(1)./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solu...
2020-02-17 16:52:54 128
原创 leetcode234_回文链表
一. 迭代1. 边移动快慢指针边反转链表的前半部分,等找到链表中点,再将前半部分与后半部分依次比较,判断是否为回文链表.//大佬的思路, 反转后半部分.class Solution {public: //题解:快慢指针法,快指针走两步,慢指针走一步,找到链表的中点。然后,翻转后半部分。最后从头、中点开始判断是否相同。 bool isPalindrome(ListNod...
2020-02-17 16:44:10 151
原创 leetcode206_反转链表_迭代+递归
一. 迭代1. 有pre, cur还要保存cur->next.class Solution {public: ListNode* reverseList(ListNode* head) { if(head==NULL || head->next==NULL) return head; //前驱指针,cur需要指向它. ...
2020-02-16 23:24:06 123
原创 leetcode141_重排链表
一.迭代1. 将链表转换为数组,然后用双指针分别取出头尾指针.2. 相当于耍赖用数组转化链表./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL...
2020-02-16 16:53:54 177
原创 leetcode142_环形链表||
一. 参考 leetcode141_环形链表_双指针https://blog.csdn.net/qieyuan4083/article/details/104336903二. 哈希表,第一个重复的即为环的入口.时间O(n),空间O(n).三. Floyd算法.第一阶段,找到链表是否有环,有环的话再找到相遇节点./** * Definition for singly-linke...
2020-02-16 00:15:43 87
原创 leetcode141_环形链表_双指针
一. 用哈希存储已经访问过的链表节点,如果有重复,则有环, 否则检测到链表末尾则无环.二. 双指针.1. 使用不同速度快慢指针,空间复杂度O(1)./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode...
2020-02-15 23:49:37 130
原创 leetcode133_克隆图_回溯
一. 可以参考leetcode138_复制带随机指针的链表,https://blog.csdn.net/qieyuan4083/article/details/104332467二. 回溯就是遍历, 运用DFS和BFS方法.1. DFS./*// Definition for a Node.class Node {public: int val; vector...
2020-02-15 20:14:14 196
原创 leetcode138_复制带随机指针的链表
一. 回溯1. 当random访问了一个新的节点,需要创建它, 否则直接返回旧的指针就好.2. 特别注意,哈希表中传入的都是指针,所以一定会是Node*类型,而不是Node./*// Definition for a Node.class Node {public: int val; Node* next; Node* random; ...
2020-02-15 19:04:19 184
原创 leetcode92_翻转链表||_递归
一. 递归1. 参考这个作者写的太好了,包括解决反转链表的所有思路.作者:labuladong链接:https://leetcode-cn.com/problems/reverse-linked-list-ii/solution/bu-bu-chai-jie-ru-he-di-gui-di-fan-zhuan-lian-biao/2. 这题是反转m到n区间的链表,如果将head移...
2020-02-15 11:12:31 181
原创 leetcode61_旋转链表
一. 迭代1. 先将链表闭合成环.2.找到相应的位置断开这个环.class Solution {public: ListNode* rotateRight(ListNode* head, int k) { //边界条件. if(head==NULL || head->next==NULL || k==0) return head;...
2020-02-14 17:42:09 121
原创 leetcode24_两两交换链表中的节点_递归
一. 递归1. 真正的交换节点的意思就是1->2变为2->1.2. 时间O(n), 空间O(n), 递归过程使用堆栈空间./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x)...
2020-02-14 16:19:31 242
原创 leetcode21_合并两个有序链表_迭代+递归
一. 递归1. 两个链表较小的元素与剩下的元素merge并合并.2. 时间复杂度O(n+m). 空间也为O(n+m). 有n+m个帧栈.class Solution {public: //函数mergeTwoLists的作用是返回合并好的链表的头结点. ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ...
2020-02-14 11:07:24 263
原创 leetcode19_删除链表的倒数第N个节点_链表_双指针_递归
1. 最简单的想法就是先求出链表的长度len,再找到(len-k)个节点,即删除节点的前一个节点,就可以将其删除.2. 两次遍历./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val...
2020-02-14 09:33:22 186
原创 leetcode2_两数相加_链表
1. 用carry来每次更新进位.2. 考虑特殊情况, [0,1]和[0,1,2], []和[0,1], [1]和[9,9], 即额外的进位./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x)...
2020-02-13 21:48:03 147
原创 leetcode215_数组中的第K个最大元素
1. 方法1, 可以升序排序后找到 len-k 索引的数即为第k个最大元素, 因为排序O(nlog(n)).2. 虽然思路简单,但是能为高级算法铺路.3. 方法2. 借助快排中partition的思想, 因为快排每次都能排好一个数,这个数左边的都小于他, 右边都大于他.class Solution {public: void swap(int &a, int ...
2020-02-07 11:27:34 126
原创 leetcode862_和至少为K的最短子数组_单调双端队列&前缀和
1. 这题感觉真的很难, 首先求和的方法转换为前缀和的形式,避免重复计算.想求[i,j]区间则为sum[i+1]-sum[j].2. 运用单调双端队列解决应该选择哪个区间的问题.因为如果存在负数,则需要把包含负数区间的求和去掉,因为负数后面的数肯定也符合条件>=K,而且长度也比较小.class Solution {public: int shortestSubarra...
2020-02-06 21:19:29 202
原创 leetcode41_缺失的第一个正数_数组技巧
1. 这题其实没有想象中的那么难,关键得利用数组的特性,我们得将不在正确位置的数放在对应的正确的位置上,然后再遍历,得到不满足条件的那个数,即为缺失的那个数.2. 卡了好长时间是因为这个交换两个数需要特别注意,顺序错了不行,因为交换的数的索引含有nums[i],即为nums[nums[i]-1],因此顺序一点不能错,这也是最需要注意的地方.class Solution {publi...
2020-02-06 15:34:57 147
原创 leetcode26_删除排序数组中的重复项_快慢指针
1. 这种题目一眼就是快慢指针问题, 原地修改数组.class Solution {public: int removeDuplicates(vector<int>& nums) { //边界情况. if(nums.size()<=1) return nums.size(); //定义快慢指针. ...
2020-02-06 10:55:22 150
原创 leetcode154_寻找旋转排序数组中的最小值||_二分查找
1. 这一题和leetcode153最大的区别就是可以拥有重复元素.2. 照例使用二分查找, 重点看下else那里,最长的注释部分解释.3. 可以参考二分查找模板,https://blog.csdn.net/qieyuan4083/article/details/102526281, 这是二分查找通用模板.class Solution {public: int fin...
2020-02-05 21:11:44 103
原创 leetcode153_寻找旋转排序数组中的最小值_二分查找
1. 这题虽然不是完全有序,但是部分有序,可以试试二分查找方法,并且使用的是数组这样的存储形式,根据下标随机访问,适合二分.class Solution {public: int findMin(vector<int>& nums) { //边界情况. if(nums.size()==1) return nums[0]; ...
2020-02-05 19:50:14 118
原创 leetcode1052_爱生气的书店老板_滑动窗口
1. 这题其实最关键的是转换思路. 不生气时间段的人数和都是固定的, 所以题目的意思是让求连续X时间段内生气的人数和的最大值.2. 可以运用滑动窗口.看窗口大小为X的窗口内,不生气的人数和的最大值是多少.class Solution {public: int maxSatisfied(vector<int>& customers, vector<i...
2020-02-03 10:42:11 188
原创 leetcode1040_移动石子直到连续||_滑动窗口
1. 这题出的真的乍一看到一点思路都没有.2. 参考别人的题解才看出端倪.3. 首先看最大移动次数是多少.因为只要我们将第一个数字stones[0]移动到stones[1]后,接下来就一定可以以间隔1按照剩下的缝隙填补,所以移动次数是stones[len-1]-stones[1]-len+2, 反过来从末尾往前看,移动次数是stones[len-2]-stones[0]-len+2, ...
2020-02-02 20:31:05 219
C++写的算法(适用找工作,涵盖几乎所有题型)
2020-08-19
初学者GAN代码(最好的,直观,代码简单,涵盖30多个)
2020-08-19
强化学习实例(直接运行,直观,方法可替换,初学者代码友好)
2020-08-19
TensorFlow实战黄文坚python代码
2018-04-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人