自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

奥古斯都

一万年太久 只争朝夕

  • 博客(33)
  • 收藏
  • 关注

原创 Pytorch中的损失函数:CrossEntropyLoss和NLLLoss的区别

在网上也浏览了很多的博客,很多博主都从熵和信息量开始介绍,因为最近在使用损失函数过程中遇到一点问题,因此就想一探究竟到底pytorch中的交叉熵损失函数是如何计算的,所有最简单的从公式和代码开始看。接下来直接介绍这两个函数:1、NLLLossclass torch.nn.NLLLoss(weight=None, size_average=True)作用:训练一个n类的分类器 参数 weight:可选的,应该是一个tensor,里面的值对应类别的权重,如果样本不均衡的话,这个参数非常有用,长

2020-06-29 16:32:55 2665 2

原创 BP神经网络(手撕前向和反向传播)

昨天突然看到BP,然后就心里想手撕一下BP的原理和代码,所以就今天看了看。有一个国外哥们写BP写的特别好:BP神经网络。好了,接下来进从这几个方面讲述BP神经网络1、什么是BP?是一种按照误差逆向传播算法训练的多层前馈神经网络2、什么是反向传播?反向传播传播的是什么?我们反向传播的目标是更新网络中的每个权重,以便它们使实际输出更接近目标输出,从而将每个输出神经元和整个网络的误差最小化。传播的误差,更新权重使得loss最小。3、前向传播前向传播传数据的输入,特征的提取,分类。

2020-06-07 21:50:07 1084

原创 剑指 Offer 59 - I. 滑动窗口的最大值

给定一个数组nums和滑动窗口的大小k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 3 1 3 [-1 -...

2020-06-28 19:44:01 119

原创 《Leetcode》209. 长度最小的子数组

给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。1、题目分析找到连续的数组,且数组之和是大于目标值,找到这个连续数组长度最短的。2、解题分析可以采用双指针法,两个指针取维护这个连续数组的窗口。使用两个while循环,初始化...

2020-06-28 19:37:30 109

原创 《Leetcode》41. 缺失的第一个正数

给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。示例1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 11、题目分析这个题目的结果是和数组的长度有关系的,和负数是没有关系的。如果本来这个数组就是一个升序的话,那么缺少的数字就是最后一个加1,也就是顺序过程中的缺少的第一个正数。2、解题分析...

2020-06-27 20:31:29 76

原创 剑指 Offer 57 - II. 和为s的连续正数序列

输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]1、题目分析找出连续的正整数序列,求出满足这个条件的所有的数组。可以用列举法和数学方法。因为是连续的,因此可以想象成以1为公差的等差数列。或者是把所有

2020-06-27 20:00:12 77

原创 《Leetcode》剑指 Offer 57. 和为s的两个数字

输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,10]1、题目分析找两个数之和等于目标值,和leetcode第一题一样,当然可以用那个方法解决,不过这个数组是递增的

2020-06-26 17:55:48 102

原创 面试题 02.01. 移除重复节点

编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]1、题目分析题目比较清晰,就是删除重复节点。可以利用一个set集合对重复节点去重。2、解题分析判断链表是否为空,不为空进行下一步 声明一个set集合,用来存储出现过的节点 如果节点的值在集合中就做删除节点pos.next = pos.next.next 如果节点不在集合中,添加节点的值到集合中并继续遍历pos = pos.next这个代

2020-06-26 16:43:28 107

原创 《Leetcode》16. 最接近的三数之和

给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。这个题和三数之和比较相似,可以说几乎一样。先判断数组长度是否大于3,如果大于等于3继续进行第二步 依次递增进行排序 使用双指针,固定一个数,动...

2020-06-24 16:02:44 137

原创 剑指 Offer 53 - II. 0~n-1中缺失的数字

一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 81、题目分析一个长度为n-1的递增排序数组,现在又有一个值缺失了,找出缺失的那个值。2、解题分析三种方法:1、一次循环遍历,时间复杂度较高;2、非缺失值之和-缺失值之和=缺失值 ;3、二分法,时间复

2020-06-24 11:45:23 162

原创 《Leetcode》67. 二进制求和

给你两个二进制字符串,返回它们的和(用二进制表示)。输入为非空字符串且只包含数字1和0。示例1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"1、题目分析题目比较简单,将两个二进制的字符串加起来然后返回一个二进制的字符串2、解题分析我采用的方式是将二进制之和转为十进制在转为二进制,有两个方法:自己写和调用内置函数 自己写的函数 将两个二进制的字符...

2020-06-23 17:24:24 74

原创 《Leecode》面试题61.扑克牌中的顺子

从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例1:输入: [1,2,3,4,5]输出: True示例 2:输入: [1,2,3,4,5]输出: True思路分析:1、题目分析顺子的话肯定不会出现重复的,如果重复就不是顺子;一个顺子中的最大值减去最小值一定是小5。满足这样的条件才是顺子。2、解题分析0是大王小王可以代替任何牌.

2020-06-18 21:26:16 228

原创 《Leetcode》1014. 最佳观光组合

给定正整数数组A,A[i]表示第 i 个观光景点的评分,并且两个景点i 和j之间的距离为j - i。一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i- j):景点的评分之和减去它们两者之间的距离。返回一对观光景点能取得的最高分。示例:输入:[8,1,5,2,6]输出:11解释:i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 111、题目分析题目比较明了清晰,就是两个景点之间的...

2020-06-17 11:41:19 158

原创 《Leetcode》297. 二叉树的序列化与反序列化

序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以下二叉树: 1 / \ 2 3 / \ 4 5序列化为 "[1,2,3,nul.

2020-06-16 15:54:37 137

原创 《Leetcode》14.最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。思路:1、题目分析本题的意思就是统计一个列表种所有单词公用的最长前缀是什么。2、解题分析如果列表长度等于0的话直接返回空字符串 如果列表长度不小于0的话用一下两种方法去做 zip函数...

2020-06-15 15:07:06 90

原创 Python小模块之Zip用法

刷leetcode题你总能看到各式各样的小方法,各式各样的python魔法方法。今天就来聊聊这个zip函数,这个是python的一个内置函数。zip()接受的参数是一个可迭代的列表,返回的是一个个元组。zip顾名思义就意味着压缩,那么解压就是zip(*)。使用下面两个小栗子进行说明。1、zip()In [1]: a=[1,2,3]In [2]: b=[4,5,6]In [3]: for item in zip(a,b): ...: print(item) ...:

2020-06-15 14:48:38 209

原创 《Leetcode》70. 爬楼梯

假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶思路:1、题目分析有多少方法可以爬到楼顶,那第n层有多...

2020-06-13 16:53:35 98

原创 《Leetcode》15. 三数之和

给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]思路:1、题目分析在这个数组中找出三个数,这三个数之和是0。2、解题分析先判断数组长度,如果小于3直接返回...

2020-06-12 15:41:33 108

原创 《Leetcode》739. 每日温度

根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用0 来代替。例如,给定一个列表temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是[1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是[1, 30000]。每个气温的值的均为华氏度,都是在[30, 100]范围内的整数。思路:1、题目分析这个题目的意思就是能...

2020-06-11 16:11:44 102

原创 《Leetcode》9. 回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数思路:这个题目比较简单,首先输入是一个整数,如果这个整数是负数的话,不可能是回文数;如果是非负数的话,用以

2020-06-10 17:03:19 89

原创 《Leetcode》面试题46. 把数字翻译成字符串

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"思路:有一次倒在了动态规划的问题上,一开始我把这个题目认为是排列组合,最后发现我太天真了;既然DP那就是以

2020-06-09 21:54:30 203

原创 从列表中随机选取几个元素

随机选取元素的话使用random这个模块:主要有选取一个还选取多个1、选取多个random.sample(population,k)population:列表 k:随机返回的个数eg:In [1]: poppulation = [4,5,9,2,1,5,3,0]In [2]: import randomIn [3]: random.sample(poppulation,3)Out[3]: [3, 9, 0]2、选取一个random.choice(seq)..

2020-06-08 20:11:58 13335

原创 《Leetcode》面试题58 - I. 翻转单词顺序

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。示例 1:输入: "the sky is blue"输出: "blue is sky the"示例 2:输入: " hello world! "输出:"world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输...

2020-06-08 17:29:03 228

原创 《Leetcode》面试题58 - II. 左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = "abcdefg", k = 2输出: "cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出: "umghlrlose"思路:1、题目分析题目的意思就是让把前n个字符和后面的字符调换位置2、解题分析两个方法

2020-06-07 15:22:16 153

原创 《Leetcode》127. 单词接龙

给定两个单词(beginWord和 endWord)和一个字典,找到从beginWord 到endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWord 是非空的,且二者不相同。示例1:输入:beginWord = "hit",endWor...

2020-06-07 15:04:58 139

原创 《Leetcode》128. 最长连续序列

给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。思路:1、题目分析这个题目的意思是找出一个数组中最长连续序列的长度,那也就是说1,1,2,3这种也算,不过长度是3而已,并不是4。2、解题分析这个题目我首先想到的是set去重,然后排序,在进行遍历就可以。但是很显然这个时间复杂度的要求不满足,但是也没右蹦,.

2020-06-06 21:53:25 115

原创 《Leetcode》面试题39. 数组中出现次数超过一半的数字

数组中有一个数字出你可以假设数组是非空的,并且给定的数组总是存在多数元素。现的次数超过数组长度的一半,请找出这个数字。示例1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2思路:1、题目分析题目的要求就是要找出数组中出现次数大于数组长度一半的数字。2、解题分析这个数字如果出现的次数比数组长度一半都大,那么肯定是众数。第一种方法:那么对这个数组进行排序去中间的数就是这个数字了。第二种方法:采用哈希表去统计每个数字出现的次数然后遍历哈希表找出出现的.

2020-06-05 22:01:19 257

原创 《Leetcode》面试题29. 顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]思路:1、题目分析这个题目的要求就是打印一个环,这个环是从外到内。2、解题分析打印分四个方向:左->右;上-

2020-06-05 21:17:55 285

原创 《Leetcode》238. 除自身以外数组的乘积

给你一个长度为n的整数数组nums,其中n > 1,返回输出数组output,其中 output[i]等于nums中除nums[i]之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的...

2020-06-05 09:49:13 180

原创 《Leetcode》837. 新21点

爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏,描述如下:爱丽丝以 0 分开始,并在她的得分少于 K 分时抽取数字。 抽取时,她从 [1, W] 的范围中随机获得一个整数作为分数进行累计,其中 W 是整数。 每次抽取都是独立的,其结果具有相同的概率。当爱丽丝获得不少于 K 分时,她就停止抽取数字。 爱丽丝的分数不超过 N 的概率是多少?示例1:输入:N = 10, K = 1, W = 10输出:1.00000说明:爱丽丝得到一张卡,然后停止。示例2:输入:N ..

2020-06-03 22:23:16 122

原创 《Leetcode》面试题64. 求1+2+…+n

求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6思路:这个题应该是小学生都会做吧,但是用到了很多的限制条件,这些条件会破解平时各种做法。所以第一时间想到递归,但是递归需要判断结束时候的条件呀,这个时候没法用关键字就不会了,看了discuss之后才知道,利用短路的思想去做。其实利用的是一个与符号,只有前面那部分满足之后才执行后面哪个部分,否则不执行。clas..

2020-06-02 15:25:28 279

原创 《Leetcode》1431. 拥有最多糖果的孩子

给你一个数组candies和一个整数extraCandies,其中candies[i]代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的extraCandies个糖果分配给孩子们之后,此孩子有 最多的糖果。注意,允许有多个孩子同时拥有 最多的糖果数目示例 1:输入:candies = [2,3,5,1,3], extraCandies = 3输出:[true,true,true,false,true] 解释:孩子 1 有 2 个糖果,如果他...

2020-06-01 20:49:43 138

原创 《Leedcode》101、对称二叉树

给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3]是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3]则不是镜像对称的: 1 / \ 2 2 \ \ 3 3思路:关于树的问题,尽量用递归的思想去解决。因为树的定义也是递归定义的。何为镜像对称呢?就是这个树的左子树和右子树的节点都是对称的。①递归法:因此可以把这个树c...

2020-06-01 09:03:54 84

空空如也

空空如也

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

TA关注的人

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