自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

原创 [Code] Do 2D GANs Know 3D Shape? Unsupervised 3D Shape Reconstruction From 2D Image GANs

def get_transform_matrices(view): b = view.size(0) if view.size(1) == 6: # 3d rotation + 3d shift rx = view[:,0] ry = view[:,1] rz = view[:,2] trans_xyz = view[:,3:].reshape(b,1,3) elif view.size(1) == 5: # 3d ro

2021-08-27 14:05:43 298 1

原创 [MMEditing] MMEditing多线程vscode调试

{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ ..

2021-05-06 10:14:15 449

原创 [Pytorch] 特征标准化

class MeanShift(nn.Conv2d): def __init__(self, rgb_range, rgb_mean, rgb_std, sign=-1): super(MeanShift, self).__init__(3, 3, kernel_size=1) std = torch.Tensor(rgb_std) # 采用1×1卷积的形式进行标准化操作,首先建立一个三通道到三通道的恒等映射 self.weig...

2020-11-28 20:57:31 1057

原创 [Pytorch] Pixel Shuffle

Pixel Shuffle在Pytorch中的实现Pixel shuffle的原理这里不着重探讨,详细原理请参考论文:Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network。这里先给出pytorch中pixel shuffle的代码。可以看到,代码的核心部分是permute操作,下面主要讨论pytorch如何通过该操作完成pixel shuffl

2020-11-17 15:28:48 1147

原创 [Pytorch] pytorch踩坑日志

最近开始学习Pytorch,记录一下自己踩过的坑。系统环境OS: Windows 10python: 3.7.6pytorch: 1.6.0cuda: 10.21.多线程数据加载trainloader = torch.utils.data.DataLoader(trainset, batch_size=4, shuffle=True, num_workers=2)如果在使用上述这类代码时发生如下错误,那

2020-10-11 15:10:35 1266

原创 深度学习基础 多层感知器&反向传播算法

定义:1.W(l)W^{(l)}W(l)为第(l−1)(l-1)(l−1)层至第l层的权重矩阵,wj,k(l)w^{(l)}_{j,k}wj,k(l)​为W(l)W^{(l)}W(l)中的第行第kkk列的一项,表示第(l−1)(l-1)(l−1)层第kkk个节点到第lll层第jjj个节点的权重(注意这里j,kj,kj,k的对应)。2.b(l)b^{(l)}b(l)为第lll层的偏置向量,bj(...

2019-11-15 11:08:30 235

转载 关于do{}while(0)

do…while(0)的用法这样的宏见过么:Cpp代码:#define FOO(x) do {\some_code_line_1;\some_code_line_2;\} while (0)(注意while(0)后面没有分号)乍一看这个宏不过就是定义了个包含多个语句的local scope,用do…while(0)包围起来简直多此一举。直接这样不就好了么:Cpp代码:#defi...

2019-03-19 12:24:05 174

原创 Leetcode109.Convert_Sorted_List_To_Binary_Search_Tree

在Leetcode看别人的代码,有用快慢指针寻找中点,在二分递归的。但个人觉得既然无论如何都是O(N)的时间复杂度了,不如将链表转换成数组解决方便。思路同Leetcode108.Convert_Sorted_Array_To_Binary_Search_Tree时间复杂度:O(N)C++代码:class Solution {public: TreeNode * sortedListToB...

2018-11-28 15:24:40 223

原创 Leetcode108.Convert_Sorted_Array_To_Binary_Search_Tree

将有序数组当做一个二叉搜索树的中序遍历,每次从中间分开,以保证子树平衡,递归的写出算法。时间复杂度:O(N)C++代码:class Solution {public: TreeNode* sortedArrayToBST(vector<int>& nums) { if (nums.empty()) return nullptr; int mid = nu...

2018-11-28 15:11:46 222

原创 Leetcode107.Binary_Tree_Level_Order_Traversal_II

层序遍历再反转结果时间复杂度:O(N)C++代码:class Solution {public: vector<vector<int>> levelOrderBottom(TreeNode* root) { if (root == nullptr) return {}; queue<pair<TreeNode*, int>> ...

2018-11-20 12:20:24 109

原创 Leetcode103.Binary_Tree_Zigzag_Level_Order_Traversal

用一个栈来使数据反向。时间复杂度:O(N)C++代码:class Solution {public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { if (root == nullptr) return {}; int dir = 1; vector<vector<int...

2018-11-19 22:22:31 115

原创 104.Maximum_Depth_Of_Binary_Tree

二叉树最简单的性质之一,递归可得。时间复杂度:O(N)C++代码:class Solution {public: int maxDepth(TreeNode* root) { if (root == nullptr) return 0; return max(maxDepth(root->left), maxDepth(root->right)) + 1; }...

2018-11-19 20:05:26 107

原创 L101.Symmetric_Tree

将二叉树对称遍历,这里给出递归和迭代两种方法时间复杂度:O(N)C++代码://迭代class Solution {public: bool isSymmetric(TreeNode* root) { if (root == nullptr) return true; queue<TreeNode*> record; record.push(root-&g...

2018-11-19 19:54:30 102

原创 Leetcode102.Binary_Tree_Level_Order_Traversal

用队列对二叉树进行层次遍历,因为需要把不同层的元素储存在不同的数组里,所以要额外保存数据在哪一层上。不要用整型数据判断数据读取到哪层上(本人开始时用第n层有2n2^n2n个节点(储存目前加进数组的个数和因上面若干节点为空导致本层节点缺失的个数)判断目前数据在哪层),这种储存方式虽然空间占用少,但当n过大时数据会溢出(有一测试用例有600层)。class Solution {public: ...

2018-11-07 16:01:14 89

原创 Leetcode106.Construct_Binary_Tree_From_Postorder_And_Inorder_Traversal

此题与Leetcode105.Construct_Binary_Tree_From_Preorder_And_Inorder_Traversal的思路基本相同。唯一的不同是后序遍历得到的数组顺序是左—右—根,从后向前(或反转后从前向后)先找到的根的右子树,而105题中先找到的是左子树。时间复杂度:O(N)C++代码:class Solution {public: TreeNode *...

2018-11-07 15:05:34 136

原创 Leetcode79.Word_Search

回溯法时间复杂度O(NMK)(在长N宽M的矩阵内搜索长为K的单词)C++代码:class Solution { vector<vector<char>> a; vector<vector<bool>> use; int n; int m;public: const int wx[4] = { 0,0,-1,1 }; const i...

2018-11-04 14:53:22 235

原创 Leetcode110.Balanced_Binary_Tree

height函数用于计算结点高度,当左右儿子高度差大于1,则停止计算返回-10。时间复杂度:O(N)C++代码:class Solution {public: bool isBalanced(TreeNode* root) { if (root == nullptr) return true; return height(root) + 10; } int height...

2018-11-01 16:16:25 145

原创 Leetcode105.Construct_Binary_Tree_From_Preorder_And_Inorder_Traversal

前序数组的结构为:根—左子树所有结点—右子树所有结点中序数组的结构为:左子树所有结点—根—右子树所有结点确定根在中序数组的位置即可确定左右子树的大小,从而从前序数组找到左儿子结点和右儿子结点的值。之后,分别以左儿子和右儿子结点为根,进行相同操作。时间复杂度:O(N^2)(最坏的情况为所有节点均为左子树,每次find操作都要遍历未放进二叉树的所有值,总操作数为n(n+1)2\frac{n(n+...

2018-11-01 15:39:26 120

原创 Leetcode144.Binary_Tree_Preorder_Traversal

前序遍历的递归写法是显然的,这里只给出非递归的解法(用栈实现)。时间复杂度:O(N)C++代码:class Solution {public: vector<int> preorderTraversal(TreeNode* root) { if (root == nullptr) return {}; vector<int> result; st...

2018-10-29 12:32:16 137

原创 Leetcode141.Linked_List_Cycle

分析见判断链表是否成环及环周长与未成环长度计算时间复杂度:O(N)C++代码:class Solution {public: bool hasCycle(ListNode *head) { if (head == nullptr) return false; ListNode* fast = head, *slow = head; while (fast != null...

2018-10-29 11:09:48 109

原创 Leetcode98.Validate_Binary_Search_Tree

对于二叉搜索树的任意一个节点,其值应满足:向上回溯,第一个向左的节点,是其下界;第一个向右的结点,是其上界。例如:从‘14’向上回溯,第一个向左的结点是‘13’,第一个向右的结点是‘14’,所以‘14’的位置正确。那么,我们反过来,从上向下看,就有:左儿子的父节点决定其后所有结点的上界,右儿子的父节点决定其后所有结点的下界。时间复杂度:O(N)C++代码:class Solution...

2018-10-29 10:59:53 96

原创 Leetcode36.Valid_Sudoku

三个数组分别储存某行某列某33方阵的数字出现情况,有重复则无效。时间复杂度O©(C=99)C++代码:class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { const int len = 9; int row[len][len]{ 0 }, col[len...

2018-10-25 20:26:07 59

原创 Leetcode93.Restore_Ip_Addresses

IP地址格式:X.X.X.X(0<=X<=255),例如172.10.255.0主要需注意的几个点:对‘0’的处理,不能出现001,010等0为首位的情况(但0可以单独存在(X.0.X.X是合法的));注意三位数的大小不能超过255,超过即为非法。时间复杂度:O(N)C++代码:class Solution {public: vector<stri

2018-10-25 20:07:03 101

原创 Leetcode95.Unique_Binary_Search_Trees_II

由Leetcode96.Unique_Binary_Search_Trees中的递推公式,我们可知,生成一棵n个节点的二叉搜索树需要固定一个根节点,然后用剩余(n-1)个节点组合左右子树,组合所有可能性。由此,我们可以递归的解决这个问题。时间复杂度:O(4nn)O(\frac{4^n}{\sqrt{n}})O(n​4n​)C++代码:class Solution {public: ve...

2018-10-25 13:50:52 96

原创 Leetcode96.Unique_Binary_Search_Trees

对于有n个节点的二叉树,由于根节点是固定的,所以n个节点的组合是(n-1)个节点组成的两个子树所有可能性乘积的和即,h(n)=∑i=0n−1h(i)∗h(n−1−i)h(n)=\sum_{i=0}^{n-1}{h(i)*h(n-1-i)}h(n)=i=0∑n−1​h(i)∗h(n−1−i)这个递推公式即为卡塔兰数的定义式,其通项公式为:h(n)=1n+1C2nnh(n)=\frac{1}{n+...

2018-10-22 22:07:15 104

原创 Leetcode91.Decode

利用动态规划的思路,到某点的可能组合数是这点向前一位的点的组合加上这个点向前两位的点的组合(如果前两位在[1,26]的范围内),其中,F(1) = 1。时间复杂度:O(N)C++代码:class Solution {public: int numDecodings(string s) { if (s.empty()) return 0; vector<int> ...

2018-10-21 21:51:32 76

原创 Leetcode94.Binary_Tree_Inorder_Traversal

二叉树的中序遍历的递归解法是显然的,这里只列出非递归算法。优先对左儿子向下搜索,搜索到尽头则将其值保存,再尝试向右搜索。时间复杂度:O(N)(N为节点数)C++代码:class Solution {public: vector<int> inorderTraversal(TreeNode* root) { vector<int> result; stack...

2018-10-21 21:46:31 65

原创 Leetcode206.Reverse_Linked_List

思路见Leetcode92.Reverse_Linked_List_II时间复杂度:O(N)C++代码:class Solution {public: ListNode * reverseList(ListNode* head) { if (head == nullptr || head->next == nullptr) return head; if (head-...

2018-10-21 16:15:13 80

原创 Leetcode92.Reverse_Linked_List_II

以1->2->3->4->5(m=2,n=4)为例时间复杂度:O(N)C++代码:class Solution {public: ListNode * reverseBetween(ListNode* head, int m, int n) { if (head == nullptr || head->next == nu

2018-10-21 15:56:58 76

原创 Leetcode82.Remove_Duplicates_From_Sorted_List_II

时间复杂度:O(N)C++代码:class Solution {public: ListNode * deleteDuplicates(ListNode* head) { if (head == nullptr) return head; ListNode* dummy = new ListNode(-1); dummy->next = head; int va...

2018-10-21 12:38:15 126

原创 Leetcode90.Subsets_II

与Leetcode78.Subsets的思路完全相同,去重方法:将nums排序,当在某一次循环内遇到相同的数,则跳过。时间复杂度:C++代码:class Solution {public: vector<vector<int>> result; vector<vector<int>> subsetsWithDu

2018-10-20 10:14:55 135

原创 Leetcode86.Partition_List

时间复杂度:O(N)C++代码:class Solution{public: ListNode * partition(ListNode* head, int x) { if (head == nullptr || head->next == nullptr) return head; ListNode n(INT_MIN); n.next = head; he...

2018-10-20 10:01:41 59

原创 Leetcode81.Search_In_Rotated_Sorted_Array_II

思路类似于Leetcode33.Search_In_Rotated_Sorted_Array,区别在于对重复的处理。当中间数字与首/尾数字相同时,我们无法确定哪边是有序的(1111231和1231111)。当首/尾重复时则将首/尾向后/前移一位直到不重复为止。时间复杂度:O(N)(当数组全部为重复的数字时,出现此最坏上界)C++代码:class Solution {public: boo...

2018-10-16 13:14:12 93

原创 判断链表是否成环及环周长与未成环长度计算

1.判断是否成环使用快慢指针法,2个指针分别以每次1个节点和每次两个节点的速度前进,若快指针指向nullptr,则无环路存在。当两指针相遇,则证明有环存在。C++代码:bool hasCircle(ListNode* node) { ListNode* fast = node, *slow = node; while (fast != nullptr && fast...

2018-10-15 22:40:21 391

原创 Leetcode20.Valid_Parentheses

运用栈,若栈为空,则只要压入闭括号即为false。遇到开括号则压入;遇到闭括号则判断与栈顶的开括号是否匹配,若匹配则二者配对弹出,否则return false。结束后检查栈内是否仍有元素,若有则return false;反之,return true。时间复杂度:O(N)C++代码:class Solution {public: bool isValid(string s) { sta...

2018-10-10 13:26:13 100

原创 Leetcode75.Sort_Colors

显然对数组进行一次遍历记录0,1,2的个数,后再次从首至尾重写数组,可以在两次遍历完成任务。更好的解决办法是利用Leetcode26.Remove_Duplicates_From_Sorted_Aarray的思路,前后各设置一个标志点,然后遍历数组,遇到0则向前边的标记点交换,标记点后移;遇到2则向后边的标记点交换,标记点前移。注意交换完需要检查一下交换过来的数是不是0或2,若是则需要再次交换。...

2018-10-10 13:19:10 82

原创 Leetcode78.Subsets

这里复用了Leetcode77.Combination中的组合函数,寻找有限集的子集就是列出从0-n的所有组合时间复杂度:O(NeN)O(Ne^N)O(NeN)(此界随N增大而渐进)时间复杂度分析:对大小为k的子集,有CnkC^k_nCnk​个,每个需要k步向数组内添加数字的操作于是我们可以得出总操作数为:F(n)=∑k=0nkCnk,又因为Cnn−k=Cnk,有F(n)=∑k=0[n2...

2018-10-09 13:33:46 134

原创 Leetcode100.Same_Tree

对二叉树的先序遍历,有不同则return false时间复杂度:O(N)C++代码:class Solution {public: bool isSameTree(TreeNode* p, TreeNode* q) { if (p == nullptr && q == nullptr) return true; else if (p == nullptr |...

2018-10-09 12:43:31 90

原创 Leetcode28.Implement_Strstr

时间复杂度:O(N)C++代码:class Solution {public: int strStr(string haystack, string needle) { if (needle.empty()) return 0; auto it_h = haystack.begin(), it_h2 = it_h, it_n = needle.begin(); while...

2018-10-08 19:22:42 87

原创 Leetcode77.Combination

为了防止重复,列举组合可能时,我们从大到小列举数字(亦可从小到大)。对n个数选取k个,可以转化为选取在[k,n]每一个i,再小于i的(i-1)个数选取(k-1)个。如此,递归的求解。时间复杂度:O(2nn)O(2^n\sqrt{n})O(2nn​)C++代码:class Solution {public: vector<vector<int>> result;...

2018-10-08 19:08:24 124

空空如也

空空如也

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

TA关注的人

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