自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Pytorch中的tensorboardX使用

tensorboard是tensorflow中的可视化工具,tensorboardX是封装之后可以在pytorch使用的可视化工具,可以在训练过程中实时地观察loss/accuracy曲线,并据此来判断网络的训练情况详细教程:Pytorch使用tensorboardX可视化。超详细!!!TensorboardX的使用遇到的问题:tensorboard: TensorFlow installation not found 访问不到图(windows)安装要同时安装tensorboa

2021-05-20 14:52:37 434

原创 动态规划--139. 单词拆分

题目链接求解思路跟昨天做的两道很像把字符串s看作总金额target,把词典看作不同的硬币面额存储: dp[i]表示0到i-1的字符串能不能被字典表示初始化: dp[0]表示字符串为空时,为true状态转移: dp[i]由以下步骤得到:遍历词典中的单词,用wj表示如果s(0,i-1)是以单词wj结尾的,dp[i] = dp[i-wj的长度]如果dp[i]=true,结束遍历代码...

2021-04-26 12:00:44 113

原创 动态规划--背包问题(零钱兑换+组合总和Ⅳ)

题目描述(题目链接)给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。解题思路存储结构: 数组dp[i]表示凑成总金额为i所需的最少的硬币个数,长度为amoun+1怎么解决不能组合成的情况: 将dp数组每个值都初始化为amount+1,若不能组合成,dp值会一直为amount+1,只需在最后返回的时候判断下就好状态转移: dp[i] = min(dp

2021-04-25 15:29:05 340

原创 动态规划--解码方法

题目描述(题目链接)一条包含字母 A-Z 的消息通过以下映射进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26要解码已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母,可能有多种方法。例如:“11106” 可以映射为:“AAJF” ,将消息分组为 (1 1 10 6)“KJF” ,将消息分组为 (11 10 6)注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ,这是由于 “6” 和 “06” 在映射中并不等

2021-04-24 16:09:54 111

原创 每日一题--912 最佳见面地点

题目描述(题目链接)有一群住在不同地方的朋友(两个或以上)想要在某地见面,要求他们去往目的地的路程和最短。现在给一个0、1组成的二维数组,1表示此地有一个人居住。使用曼哈顿距离作为计算总距离,公式为:(p1, p2) = |p2.x - p1.x| + |p2.y - p1.y|核心思想将最小路程分解为两个问题行方向上的最小距离:对于每一行,计算其他行上的朋友到这一行的距离(只计算行方向的),求最小值列方向上的最小距离:对于每一列,计算其他列上的朋友到这一列的距离(只计算列方向的),求最小值

2021-04-21 17:00:50 459

原创 每日一题--220. 存在重复元素 III

题目描述(题目链接)给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。如果存在则返回 true,不存在返回 false。输入:nums = [1,2,3,1], k = 3, t = 0输出:true滑动窗口&二分(红黑树)算法步骤存储结构: TreeSet。核心思想: 对于nums[i],用TreeSet(即红

2021-04-20 14:16:44 168

原创 每日刷题--会议室I、II

920. 会议室给定一系列的会议时间间隔,包括起始和结束时间[[s1,e1],[s2,e2],…(si < ei),确定一个人是否可以参加所有会议。算法步骤重写sort方法,按开始时间给intervals排序遍历,比较每个的start和上一个的end代码/** * Definition of Interval: * public classs Interval { * int start, end; * Interval(int start, int end)

2021-04-19 18:47:46 269

原创 leetcode每日一题--打家劫舍I、II

动态规划的经典题型题解里有一个讲得很好,记录一下打家劫舍 II(动态规划,结构化思路,清晰题解)

2021-04-15 16:21:50 124

原创 leetcode每日一题--208. 实现 Trie (前缀树)

题目描述(题目链接)Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word。boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false。boolean st

2021-04-14 22:06:14 114

原创 leetcode每日一题--179. 最大数

题目描述(题目链接)给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:“210”示例 2:输入:nums = [3,30,34,5,9]输出:“9534330”求解思路重新定义一个比较字符串s1和s2大小的函数:从高位到低位依次比较,要注意的是前面几位都相等的情况(如3和30,432和43234,111311和1113)调用上面的函

2021-04-12 19:45:27 380

原创 leetcode每日一题--264. 丑数 II

学习记录动态规划套路–知乎树形dp:二叉树染色(昨天比赛遇到的,太难了呜呜,现在还没看懂,改天再回过头来看吧)题目描述给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。示例 :输入:n = 10输出:12解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。方法动态规划+三指针:数组元素含义: dp[i]表示第i个丑数,三指针p2,p3,p5分别代表当前要与2/3/5相乘的

2021-04-11 21:18:32 168 1

原创 leetcode每日一题--剑指 Offer 03. 数组中重复的数字

题目描述(题目链接)在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 :输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3方法1遍历数组,用数组set保存每个数字的个数,当大于1时,直接返回当前数字。代码1执行用时:1 ms, 在所有 Java 提交中击败了83.65%的用户 内存消耗:46.1 MB, 在所有 Java提交中击败了

2021-04-09 15:50:02 48

原创 leetcode每日一题--剑指 Offer 36. 二叉搜索树与双向链表

题目描述(题目链接)输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。求解思路中序遍历同时构建双向链表,用head指针保存链表的第一个节点,用tail指针保存前一个节点(用来构建前后节点之间的关系)。代码执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户内存消耗:37.8 MB, 在所有 Java 提交中击败了61.97%的用户/*// Definition for a Node.class Node

2021-04-08 16:51:49 63

原创 每日刷题--25. K 个一组翻转链表

题目描述(题目链接)给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:你可以设计一个只使用常数额外空间的算法来解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。示例:输入:head = [1,2,3,4,5], k = 2输出:[2,1,4,3,5]输入:head = [1,2,3,4,5], k = 3输出:[...

2021-04-07 22:30:10 106

原创 leetcode每日一题--3. 无重复字符的最长子串

题目描述(题目链接)求解思路1滑动窗口(可参考leetcode官方题解)i指针指向窗口的左边,j指针指向窗口的右边。用HashSet存储无重复的子串。若j指向的字符和当前HashSet无重复,则加入,j右移若重复,i要右移到无重复的位置,同时舍弃掉重复字符之前的。代码1执行用时:7 ms, 在所有Java提交中击败了79.41%的用户内存消耗:38.5 MB, 在所有Java提交中击败了75.10%的用户class Solution { public i...

2021-04-06 12:28:01 69

原创 leetcode每日一题--142. 环形链表 II

题目描述(题目链接)给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?求解思路1与141. 环形链表的求解思路1快慢指针的基础上,推导:快指针走的距离:L+n*R+X慢..

2021-04-05 16:36:38 88

原创 leetcode每日一题--146. LRU 缓存机制

题目描述(题目链接)运用你所掌握的数据结构,设计和实现一个LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value)如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它...

2021-04-05 15:43:04 119

原创 leetcode每日一题--141. 环形链表

补上昨天的。。。。题目描述(题目链接)给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。求解思路1使用快慢指针,快指针走两步,慢指针走一步,若有环,

2021-04-03 23:02:05 79

原创 leetcode每日一题--21. 合并两个有序链表

昨天太累了没刷,断了一天,我有罪题目描述(题目链接)将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 :输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]求解思路链表的基本操作(类似归并排序中合并的思想,双指针,只不过这里不用指针)代码执行用时:0 ms, 在所有Java提交中击败了100.00%的用户内存消耗:37.9 MB, 在所有Java提交中击败了51.71...

2021-04-03 22:33:20 79

原创 leetcode每日一题--1143. 最长公共子序列

题目描述(题目链接)给定两个字符串text1 和text2,返回这两个字符串的最长公共子序列的长度。一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。示例 :输入:text1 = "abcde...

2021-04-01 17:18:09 105

原创 leetcode每日一题--190. 颠倒二进制位

题目描述(题目链接)颠倒给定的 32 位无符号整数的二进制位。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的示例 2中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。进阶:如果多次调用这个函数,你将如何优化你的算法?示例..

2021-03-31 23:17:38 87

原创 leetcode刷题--15. 三数之和

题目描述(题目链接)给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 :输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]求解思路啊这道题竟然两年前就做过,但还是没想出来先对数组排序,从i=0开始,用双指针j和k遍历i后面的数情况1:若nums[i]+nums[j]...

2021-03-30 13:58:20 65

原创 leetcode刷题--20. 有效的括号

题目描述(题目链接)给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。示例输入:s = "([)]"输出:false输入:s = "{[]}"输出:true求解思路引入一个栈tmp,遍历字符串,若是左括号,入栈;若是右括号,出栈,若出栈的左括号刚好能和当前的右括号匹配,就继续,若不能,直接返回false。最后,如果全部匹配完了,栈为空,返.

2021-03-29 10:24:20 71

原创 leetcode刷题--236. 二叉树的最近公共祖先

题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例求解思路从第一个root开始,分别遍历其左、右子树,记录左、右子树中含有要找的节点的个数l和r若root就是p或q中的一个,直接返回root 若l=1,r=1,则最近公共祖先就为root 若l=2,则root = root.

2021-03-28 12:10:54 92

原创 leetcode刷题--剑指 Offer 22. 链表中倒数第k个节点

题目描述输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.求解思路1先遍历一遍链表,得到链表的长度len,再遍历到len-k即为倒数第k个节点代码1执行用时:0 m

2021-03-27 23:00:12 58

原创 leetcode刷题--53. 最大子序和

题目描述给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 :输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6 。求解思路动态规划的思想从前往后遍历,dp[i]表示当前含有nums[i]的最长子序和。最后,数组dp中的最大值即为最大子序和。递推公式:代码执行用时:1 ms, 在所有Java提交中击败了94.81...

2021-03-26 11:59:35 108

原创 leetcode刷题--200. 岛屿数量(Java 深度优先搜索dfs)

题目描述(题目链接)给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例 2:...

2021-03-25 14:34:03 325

原创 leetcode刷题--5. 最长回文子串

题目描述给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。求解思路1类似动态规划的思想。从前往后遍历,maxs[i]储存包含s中第i个字符的最长回文子串,最后输出maxs中最长的。示例:s = “babad”i maxs 0 b 1 a 2 bab 3 aba 4 d 这应该算是暴力求解了,效率太低了!代码1执行用

2021-03-25 00:16:31 127

原创 mongo数据库安装与使用

Windows10环境下MongoDB安装与使用

2021-03-24 10:34:58 58

原创 leetcode刷题--103. 二叉树的锯齿形层序遍历

题目描述给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层序遍历如下:[ [3], [20,9], [15,7]]求解思路在上一道题(102. 二叉树的层序遍历)的基础上,先试了下用队列是怎么样的。发现这道题应该是不管是哪一层,都是先...

2021-03-23 11:36:09 133

原创 leetcode刷题--102. 二叉树的层序遍历

题目描述给你一个二叉树,请你返回其按层序遍历得到的节点值。 (即逐层地,从左到右访问所有节点)。二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[ [3], [9,20], [15,7]]求解思路用队列queue保存访问的节点,先进先出。补充知识Java中的集合类的关系图:本次题目用到的接口有List和Queue,具体的实现类分...

2021-03-22 12:11:46 85

原创 leetcode刷题--912. 排序数组

题目描述给你一个整数数组nums,请你将该数组升序排列。输入:nums = [5,2,3,1]输出:[1,2,3,5]求解思路十大经典排序算法总结(Java实现+动画)代码(快速排序)class Solution { public int[] sortArray(int[] nums) { quicksort(nums,0,nums.length-1); return nums; } void quicksort(i.

2021-03-21 14:19:41 166

原创 leetcode刷题--72. 编辑距离

题目描述给你两个单词word1 和word2,请你计算出将word1转换成word2 所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符 删除一个字符 替换一个字符输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rorse -> rose (删除 'r')rose -> ros (删除 'e')求解思路(看评论区学到的,呜呜呜太难了)...

2021-03-20 17:05:07 106

原创 leetcode刷题--300. 最长递增子序列

题目描述给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 求解思路动态规划思想。从前往后遍历,用bp Map保存当前最长子段的长度和当前最长子段的尾数(要记录当前的最小值)

2021-03-19 22:54:28 351

原创 leetcode刷题--215. 数组中的第K个最大元素

题目描述在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。输入: [3,2,1,5,6,4] 和 k=2输出: 5求解思路1刚开始想到的是用冒泡排序,循环k次,数组中第len-k个就是第k个最大元素。但复杂度比较高,内存利用率也比较大。代码1class Solution { public int findKthLargest(int[] nums, int k) { int l...

2021-03-18 14:28:41 82

原创 leetcode刷题--121. 买卖股票的最佳时机

题目描述给定一个数组 prices ,它的第i 个元素prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是...

2021-03-17 16:23:39 182

原创 leetcode刷题--206.反转链表(Java)

解题思路(求解思路是参考的评论区)创建三个指针,分别指向前一个节点pre、当前节点cur和下一个节点next,建立cur->pre的链表,迭代下去,最后返回pre代码如下:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { th...

2021-03-17 11:24:25 92

转载 【转】virtualbox无法打开虚拟机,“error in supR3HardenedWinReSpawn“终极解决方法

virtualbox无法打开虚拟机,"error in supR3HardenedWinReSpawn"终极解决方法展开解决方法:那是因为vboxdrv服务没有安装或没有成功启动,64位的系统经常这样,找到安装目录下的vboxdrv文件夹,如D:\Program Files\Oracle\VirtualBox\drivers\vboxdrv,右击VBoxDrv.inf,选安装,然后重启电脑。...

2020-08-12 16:50:27 2191 1

原创 2019南大计算机本科开放日机试题

1.同NOI OJ 3528 最小新整数题目描述:给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。现在从m位中删除k位(0<k < m),求生成的新整数最小为多少?例如: n = 9128456, k = 2, 则生成的新整数最小为12456输入第一行t, 表示有t组数据;接下来t行,每一行表示一组测...

2019-07-12 21:44:38 1524 5

原创 算法学习——动态规划

62.不同路径(动态规划及优化) https://blog.csdn.net/xushiyu1996818/article/details/86308900 https://segmentfault.com/a/1190000016315625 思路: dp存储路径数 初始值是第一行和第一列 递推:dp[i][j] = dp...

2019-05-10 21:12:33 131

空空如也

空空如也

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

TA关注的人

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