- 博客(122)
- 收藏
- 关注
原创 深度学习入门学习之杂
全连接层1、定义由于每个输出节点与全部的输入节点相连接,这种网络层称为全连接层(Fully-connected Layer),或者稠密连接层(Dense Layer),W 矩阵叫做全连接层的权值矩阵,????向量叫做全连接层的偏置2、实现张量方式实现在 TensorFlow 中,要实现全连接层,只需要定义好权值张量 W 和偏置张量 b,并利用TensorFlow 提供的批量矩阵相乘函数 tf.matmul()即可完成网络层的计算层方式实现TensorFlow 中有更加高层、使用更方便的层实
2020-12-01 20:58:13
289
原创 深度学习之数据加载
在 TensorFlow 中,keras.datasets 模块提供了常用经典数据集的自动下载、管理、加载与转换功能,并且提供了 tf.data.Dataset 数据集对象,方便实现多线程(Multi-thread),预处理(Preprocess),**随机打散(Shuffle)和批训练(Train on batch)**等常用数据集功能常用数据集:Boston Housing 波士顿房价趋势数据集,用于 回归模型 训练与测试CIFAR10/100 真实图片 数据集 ,用于图片分类任务
2020-11-28 15:02:04
710
原创 深度学习入门之四
数据复制1、tf.tile(x, multiples)函数完成数据在指定维度上的复制操作,multiples 分别指定了每个维度上面的复制倍数,对应位置为 1 表明不复制,为 2 表明新长度为原来的长度的 2 倍,即数据复制一份,以此类推b = tf.constant([1,2])print(b)b = tf.expand_dims(b,axis = 0)print(b)#对b在行上复制一份c = tf.tile(b,multiples = [2,1])print(c)#对b在列上复制一
2020-11-25 18:58:16
173
1
原创 深度学习入门之三
数学运算**±/,pow,square//(表示整除),%exp,log@,matmullinear layer一、element-wise±/ pow,square//(表示整除),%exp,log都是对 对应元素进行操作二、matrix-wise@,matmul(这两个均用来表示矩阵乘法)import tensorflow as tfa = tf.ones([2,2])b = tf.fill([2,2],3.)print(a,b)print("这是a*b",a*b)
2020-11-22 21:28:45
345
原创 Leetcode 216. 组合总和 III
链接:https://leetcode-cn.com/problems/combination-sum-iii找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。思路:直接套用模板,跟那个全排列有点像,还有其实就是个N叉树的前序遍历,细品。害,我这个机器人。class Solution {public:vector<vector<int> > res;
2020-11-10 22:09:52
116
原创 深度学习入门之二
一、索引与切片可以用来提取张量的部分数据1、索引(不推荐)2、常用numpy风格变量名[index1,index2,index3,…,indexn]切片1 start:end切片2 规定步长 start????step step为正表示正向,为负表示逆向取多个维度上的所有数据 …二、gather:可以用来指定某些值#b表示[班级,人数,成绩]b = tf.random.normal([3,4,3])b= tf.cast(b,tf.int32)print(b)#0、2号班
2020-11-07 16:04:19
172
原创 深度学习入门之一
数据类型一、数值类型scalar(单个数)、vector[]、matrix[[],[]]、tensor(张量):所有维度>2 的数组统称为张量,例如shape[2,32,32,3]的张量共有4维;在tensorflow中,为了表达方便,吧标量、向量、矩阵也统称为张量,不作区分,需要根据张亮的维度树和形状自行判断二、创建Tensor#创建标量a = tf.constant(3.0)print(a.dtype)print(a)print(a.shape)print(a.numpy
2020-11-05 21:47:58
165
原创 Leetcode1038. 把二叉搜索树转换为累加树
链接:https://leetcode-cn.com/problems/binary-search-tree-to-greater-sum-tree/给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。思路:二叉树
2020-11-05 15:54:24
157
原创 Leetcode230. 二叉搜索树中第K小的元素
链接:https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。思路:这道题有点水,二叉搜索树中序遍历的结果是升序排列,求第K小元素,就是中序遍历路径的第k-1个元素/** * Definition for a binary tree node. * struct Tr
2020-11-03 21:05:07
63
原创 Leetcode701. 二叉搜索树中的插入操作
链接:https://leetcode-cn.com/problems/insert-into-a-binary-search-tree给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。思路:利用二叉搜索树的性质;递归/** * Definition for a binary t
2020-11-02 21:40:06
150
原创 Leetcode654. 最大二叉树
链接:https://leetcode-cn.com/problems/maximum-binary-tree给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。通过给定的数组构建最大二叉树,并且输出这个树的根节点。/** * Definition for a binary tree node. * struct TreeNode { *
2020-11-01 21:38:20
150
原创 Leetcode508. 出现次数最多的子树元素和
链接:https://leetcode-cn.com/problems/most-frequent-subtree-sum给你一个二叉树的根结点,请你找出出现次数最多的子树元素和。一个结点的「子树元素和」定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。你需要返回出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的子树元素和(不限顺序)。/** * Definition for a binary tree node. * struct TreeNode {
2020-10-31 21:59:04
994
原创 Leetcode897. 递增顺序查找树
题目链接:https://leetcode-cn.com/problems/increasing-order-search-tree/给你一个树,请你 按中序遍历 重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。思路:将中序遍历的结果存储下来,再按照要求建立右单分支结点,创建的时候要用new/** * Definition for a binary tree node. * struct TreeNode { * int val; *
2020-10-31 21:30:38
83
原创 Leetcode965. 单值二叉树
链接:https://leetcode-cn.com/problems/univalued-binary-tree/如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。思路:利用set进行去重,如果set中大小大于1,说明一定不是单值/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *
2020-10-28 20:23:58
78
原创 Leetcode671. 二叉树中第二小的节点
链接:https://leetcode-cn.com/problems/second-minimum-node-in-a-binary-tree给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。更正式地说,root.val = min(root.left.val, root.right.val) 总成立。给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -
2020-10-27 21:43:17
117
原创 653. 两数之和 IV - 输入 BST
链接:https://leetcode-cn.com/problems/two-sum-iv-input-is-a-bst/给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。思路:俺不会什么奇技淫书,只会硬搞/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode
2020-10-25 21:43:55
86
原创 二叉树的层序遍历习题集锦
想说点东西给我自己啊,鬼知道我这一周到底干了啥;干啥啥不行,吃饭第一名,冬天快要来了,有羽绒服不需要脂肪来御寒,请有点自知之明,微笑脸。要把前几天没做的给补回来这次就来个二叉树的二层次遍历叭,从二叉树的层次遍历可以延伸出好多题目层次遍历集锦1.102. 二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7]/** * Definition for a binary tree
2020-10-22 21:04:53
1788
原创 Leetcode 617. 合并二叉树
题目链接https://leetcode-cn.com/problems/merge-two-binary-trees给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。/** * Definition for a binary tree node. * struct TreeNode { * in
2020-10-18 11:19:37
74
原创 leetcode 606. 根据二叉树创建字符串
题目链接https://leetcode-cn.com/problems/construct-string-from-binary-tree你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。思路:相当于前序遍历的升级,搞得花里胡哨的/** * Definition for a binary tree node. * struct TreeNode { *
2020-10-18 10:47:42
142
原创 Leetcode 108. 将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。思路:利用二叉搜索树的性质,中序遍历是一个升序序列,按照常理,仅仅知道中序遍历是无法得到二叉树的,题目中要求二叉树的高度之差不能超过一,选择根节点的时候考虑使用中间结点/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNo
2020-10-17 09:51:14
185
原创 Leetcode N叉树的前、后序遍历
给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个 3叉树 :思路:类比二叉树的前序遍历模板,push操作放在之前做,递归孩子结点操作放在后面/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _va
2020-10-17 09:15:45
67
原创 Leetcode 572. 另一个树的子树
题目链接:https://leetcode-cn.com/problems/subtree-of-another-tr给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。思路:这道题是leetcode100题 相同数树的扩展,在这道题 t可能是s中的某一节点;也就是如果t树的根节点如果是s中的某一节点,接下来要做的就是 判断当前s树指向的 与t根节点值相等的结点 为根的子树 是否
2020-10-16 18:58:47
87
原创 Leetcode 559. N叉树的最大深度
给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。思路与一:在求二叉树深度的模板上进行修改/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vecto
2020-10-15 10:32:08
85
原创 Leetcode 530. 二叉搜索树的最小绝对差
本题与 783 https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ 相同给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。思路:利用二叉搜索树的特性,中序遍历的结果是升序序列的数组,那么题目就转变成在升序序列中找绝对值最小,每次比较当前节点与前一节点差值的绝对值与目前ans中保存的最小值的大小,将较小的保存在ans中/** * Definition for a binary tre
2020-10-14 09:33:09
100
原创 Leetcode 501. 二叉搜索树中的众数
题目链接地址https://leetcode-cn.com/problems/find-mode-in-binary-search-tree给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2],思路:利用前序遍历(unordered_map)统计每个元素出现的频度,然后
2020-10-13 09:35:31
56
原创 Leetcode 404. 左叶子之和
计算给定二叉树的所有左叶子之和。https://leetcode-cn.com/problems/sum-of-left-leaves/思路:好像了然于胸,掌握住那个套路了,不过这才是简单题。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(
2020-10-12 15:21:36
47
原创 LeetCode 257. 二叉树的所有路径
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。思路:我用的是简单的回溯思想,回溯模板一定要熟透;这个题就是想让其求根节点到叶子结点的路径,与昨天求 根节点到某一节点的路径 相似;同时这个题还需要整型到string类型的转换,题目结果是string,带“->”/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *l
2020-10-11 18:25:01
54
原创 LeetCode 最近公共祖先
题目链接https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]思路:
2020-10-10 10:12:33
124
原创 Leetcode 226. 翻转二叉树
PS:一下子通过,让我有点不值所措,哈哈哈,菜鸡久了,就会对自己产生怀疑和不自信。挺起胸脯,要自信./** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class So.
2020-10-09 09:01:52
65
原创 LeetCode 111. 二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。分析:乍一看,我以为是和求二叉树的高度那种思想一样,返回的结果是二叉树左右子树最小高度+1,可是 忽略了左右子树可能有一方为空的情况,就是二叉树呈现单支的情况/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *
2020-10-08 09:41:52
177
原创 LeetCode 110.平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL)
2020-10-07 09:24:27
125
原创 一招打通优先队列解决前K大/小 XXXX 的问题
前 K 个高频元素问题描述 :给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]说明:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。输出时
2020-08-05 09:10:59
585
原创 栈 队列
**使括号有效的最少添加**** 问题描述 ????*给定一个由 ‘(’ 和 ‘)’ 括号组成的字符串 S,我们需要添加最少的括号( ‘(’ 或是 ‘)’,可以在任何位置),以使得到的括号字符串有效。从形式上讲,只有满足下面几点之一,括号字符串才是有效的:它是一个空字符串,或者它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者它可以被写作 (A),其中 A 是有效字符串。给定一个括号字符串,返回为使结果字符串有效而必须添加的最少括号数。示例 1:输入
2020-07-17 15:58:39
114
原创 单链表(不带头结点)各种操作
主函数中根据需求直接调用就可。单链表结构定义struct ListNode{ int val; ListNode *next; ListNode() : val(0), next(NULL) {} ListNode(int x) : val(x), next(NULL) {} ListNode(int x, ListNode *next) : val(x), next(next) {}};各个子函数功能及说明ListNode *cr
2020-07-04 17:47:41
3030
原创 小数第n位
#include<stdio.h>int main(){ int a,b,n,i; scanf("%d%d%d",&a,&b,&n); while(a>b){ a%=b; } i=0;//计算小数点后的第i位 //a<b,若想得到小数点后的位数则需a*10 不断取商即可 while(i<=n+2){ a*=10; i++; if(i>=n && i<=n+2){//输出符合题目要求的位数 .
2020-05-15 20:36:52
212
原创 44 不同单词个数统计
这道题主要在于 根据空格来截取单词strtok函数的应用,类似于进阶求最长的单词#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char str[501]; char *p[501],*temp;//*p[501]为指针数组,用来存放不同字符串(首地址) int i,j; gets(str); temp=strtok(str," ");//stotok返回的是字符指.
2020-05-15 20:36:37
227
原创 东华大学研究生复试------45 笨小猴
本质不难,思路要清晰。统计字母出现的次数--》找出出最多和最少的次数,并计算差----》判断差是否为素数#include<stdio.h>#include<math.h>#include<string.h>//判断一个数是否为素数int sushu(int x){ int i; if(0==x || 1==x) return 0; //flag=1; for(i=2;i<=sqrt(x);i++){ if(0==x%i){ ..
2020-05-15 20:36:16
544
6
原创 47 Anagrams问题
#include<stdio.h>#include<ctype.h>#include<string.h>int main(){ char str1[81],str2[82]; int a[26]={0};int b[26]={0}; int i,len1,len2;#if(0) for(i=0;i<26;i++){ a[i]=0; b[i]=0; }#endif gets(str1); gets(str2); len1=strl.
2020-05-15 20:34:19
191
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人