- 博客(38)
- 收藏
- 关注
原创 JZ63 数据流中的中位数
描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。示例1输入:[5,2,3,4,1,6,7,0,8]返回值:"5.00 3.50 3.00 3.50 3.00 3.50 4.00 3.50 4.00 "说明:数据流里面不断吐出的是5,2,3…,则得到的平均数分
2021-09-05 17:34:42 164
原创 JZ64 滑动窗口的最大值
描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6
2021-09-05 00:15:05 151
原创 JZ65 矩阵中的路径
描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。示例1输入:[[a,b,c,e],[s,f,c,s],[a,d,e,e]],“abcced”复制
2021-09-04 23:23:01 160
原创 JZ66 机器人的运动范围
描述地上有一个rows行和cols列的方格。坐标从 [0,0] 到 [rows-1,cols-1]。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于threshold的格子。 例如,当threshold为18时,机器人能够进入方格[35,37],因为3+5+3+7 = 18。但是,它不能进入方格[35,38],因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?范围:1 <= rows, cols<= 10
2021-09-04 22:19:39 119
原创 JZ67 剪绳子
描述给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],…,k[m]。请问k[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入描述:输入一个数n,意义见题面。(2 <= n <= 60)返回值描述:输出答案。示例1输入:8返回值:18class Solution: def cutRope(s
2021-09-04 20:19:18 78
原创 QQ4 游戏任务标记
游戏里面有很多各式各样的任务,其中有一种任务玩家只能做一次,这类任务一共有1024个,任务ID范围[1,1024]。请用32个unsigned int类型来记录着1024个任务是否已经完成。初始状态都是未完成。 输入两个参数,都是任务ID,需要设置第一个ID的任务为已经完成;并检查第二个ID的任务是否已经完成。 输出一个参数,如果第二个ID的任务已经完成输出1,如果未完成输出0。如果第一或第二个ID不在[1,1024]范围,则输出-1。输入描述:输入包括一行,两个整数表示人物ID.输出描述:输出是否
2021-08-23 11:15:32 124
原创 QQ2 微信红包
春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。若没有金额超过总数的一半,返回0。测试样例:[1,2,3,2,2],5返回:2思路:假设存在一个数出现次数超过红包一半,使用“同归于尽”,则剩下的一定是这个数。但是数据可能有不存在超过红包一半的,这个时候就要输出0。可以通过查看排序过后的
2021-08-22 16:00:34 138
原创 QQ1 生成格雷码
递归:思路:n位gray码是由n-1位gray码生成,举个例子简单一些:比如求n=3的gray码,首先知道n=2的gray码是(00,01,11,10)那么n=3的gray码其实就是对n=2的gray码首位添加0或1生成的,添加0后变成(000,001,011,010)添加1后需要顺序反向就变成(110,111,101,100)组合在一起就是(000,001,011,010,110,111,101,100)class GrayCode: def getGray(self, n):
2021-08-22 15:30:48 131
原创 树的子结构(剑指offer)
树的子结构描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)输入:{8,8,#,9,#,2,#,5},{8,9,#,2}返回值:true从根节点开始判断,B树是不是A树的子树。如果不是,进入2判断B树是不是A树的左子树的子树【它也会按照根——左子树——右子树的顺序来判断】判断B树是不是A树的右子树的子树【它也会按照根——左子树——右子树的顺序来判断】# -*- coding:utf-8 -*-# class TreeNode:# d
2021-08-05 17:58:55 131
原创 合并两个排序的链表(剑指offer)
合并两个排序的链表描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。输入:{1,3,5},{2,4,6}返回值:{1,2,3,4,5,6}遍历两个链表,按大小顺序拼接# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: #
2021-08-05 14:48:18 92
原创 HRNet模型结构
HRNet论文:HRNet:Deep High-Resolution Representation Learning for Human Pose EstimationHRNet共有18,32,48三个版本,下面展示的是48的版本。注意:原作者公布的代码中,其最后并没有上采样这一步骤,也就是说,最后输出的图片的大小为原图片的1/4。由于本人自己做的是端到端的分割,因此在这里补上了一个上采样操作,不需要的可以自行删去。写在篇尾:创作不易,请尊重劳动成果。...
2021-07-27 17:44:44 1233 2
原创 200.岛屿数量
给你一个由 ‘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:输入:grid = [[“1”,“1”,“0”,“0
2021-06-20 17:06:22 125
原创 121. 买卖股票的最佳时机
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1
2021-06-11 11:24:40 89
原创 88. 合并两个有序数组
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]思路:从后往前遍历,将更大的值放入当前位置。cla
2021-06-10 15:52:45 100
原创 53. 最大字序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。每次都查看前一个元素,如果前一个元素<0,则说明前面是累赘,需要直接丢掉,从当前元素开始重新找子数组。class Solution: def maxSubArray(self, nums: List[int]) -> int:
2021-06-09 12:42:30 125
原创 把数组排成最小的数(剑指offer)
把数组排成最小的数题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。示例1输入[3,32,321]返回值“321323”解题思路:暴力法:先进行全排列,然后找到最小的那个。参考字符串的排列的思路。即,先固定其中一个元素,然后对剩下的元素进行排列。如:"abc"先固定"a",对"bc"进行排序。同理固定"b",对"ac"排序。【递归条件】当数组只含
2021-05-19 21:39:12 118
原创 整数中1出现的次数(剑指offer)
整数中1出现的次数题目描述输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数例如,1~13中包含1的数字有1、10、11、12、13因此共出现6次示例1输入13返回值6解题思路:代码:class Solution: def NumberOf1Between1AndN_Solution(self, n): i = 1 #保存当前位表示的大小,如1,10,100,1000, ... count = 0 while
2021-05-19 19:19:07 127
原创 数组中出现次数超过一半的数字(剑指offer)
数组中出现次数超过一半的数字题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。你可以假设数组是非空的,并且给定的数组总是存在多数元素。1<=数组长度<=50000示例1输入[1,2,3,2,2,2,5,4,2]返回值2解题思路:我们做这样的想象,现在有来自不同阵营的多支部队【多个不同的元素】,他们互为敌人。每个士兵都容不得敌人,宁愿
2021-05-19 10:51:03 93
原创 字符串的排列(剑指offer)
字符串的排列题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。示例1输入“ab”返回值[“ab”,“ba”]解题思路:先对输入的字符串进行排序【要求按字典顺序打印】。对排好序的数组:先固定其中一个元素,然后对剩下的元素进行排列。如:"abc"先固定"a",对"
2021-05-18 11:26:50 140
原创 顺时针打印矩阵(剑指offer)
顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.示例1输入[[1,2],[3,4]]返回值[1,2,4,3]解题思路:设置up,down,left,right四个点。先向右走,将整行的值保存下来。该行再也不会被遍历到,则代表上界的up的值+1,该值不能超过
2021-05-17 12:27:36 107
原创 二叉搜索树与双向链表(剑指offer)
二叉搜索树与双向链表输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路:二叉搜索树:即左子树<根<右子树 10 ↙ ↘ 6 14 ↙ ↘ ↙ ↘ 4 8 12 16双向链表:如 4 ⇆ 6 ⇆ 8 ⇆ 10 ⇆ 12 ⇆ 14 ⇆ 16,其中每个结点都有两个指针,一个指向前一个结点,一个指向后一个结点。由于树中的每个结点都有两个指针,指向左子树和右子树,刚好可以转换为
2021-05-17 12:24:39 148
原创 树的子结构(剑指offer)
树的子结构题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)示例1输入{8,8,#,9,#,2,#,5},{8,9,#,2}返回值true解题思路:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/clas
2021-04-30 15:57:35 143 2
原创 反转链表(剑指offer)
反转链表题目描述输入一个链表,反转链表后,输出新链表的表头。示例1输入{1,2,3}返回值{3,2,1}解题思路使用栈# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回ListNode def ReverseList(self, pHead)
2021-04-27 20:05:11 108
原创 链表中倒数第k个结点(剑指offer)
链表中倒数第k个结点题目描述输入一个链表,输出该链表中倒数第k个结点。如果该链表长度小于k,请返回空。示例1输入{1,2,3,4,5},1返回值{5}解题思路栈遍历链表得到长度lenth,重新遍历至lenth-k个结点快慢指针 def FindKthToTail(self , pHead , k ): if not pHead or k == 0: return None cur = pHead a
2021-04-27 09:54:08 83
原创 调整数组顺序使奇数位于偶数前面(剑指offer)
调整数组顺序使奇数位于偶数前面题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。示例1输入[1,2,3,4]返回值[1,3,2,4]解题思路冒泡排序思路。比较相邻的元素。如果第一个为偶数,第二个为奇数,就交换他们两个。例如:【1,2,3,4,5,6,7】【1,3,2,5,4,7,6】【1,3,5,2,7,4,6】【1,3,5,7,2,4,6】 d
2021-04-22 15:24:08 117
原创 数值的整数次方(剑指offer)
数值的整数次方题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。不得使用库函数,同时不需要考虑大数问题,也不用考虑小数点后面0的位数。示例1输入2.00000,3返回值8.00000解题思路:暴力法exponent个base相乘 def Power(self, base, exponent): if exponent == 0:
2021-04-21 10:28:02 96
原创 二进制中1的个数(剑指offer)
二进制中1的个数题目描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。示例1输入10返回值2解题思路使用右移。例如:当n=0000 1101时,(n & 1) = 1,然后n右移一位得到0000 0110,再次和1进行与操作,直到 n=0 时停止右移。其中要注意的是,正数右移高位填零,负数右移高位填1。所以如果n为负数,需要先计算出负数的补码,再进行右移和与操作。 def NumberOf1(self, n): if n &l
2021-04-20 17:32:43 86
原创 斐波那契数列 / 跳台阶(剑指offer)
斐波那契数列题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n≤39示例1输入4返回值3解题思路:直接循环 def Fibonacci(self, n): result = [0,1] for i in range(2,n+1): result.append(result[i-1]+result[i-2]) return resul
2021-04-19 16:24:13 296
原创 旋转数组的最小数字(剑指offer)
旋转数组的最小数字题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。示例1输入[3,4,5,1,2]返回值1解题思路几种情况:【1,0,1,1,1】【1,1,1,0,1】if rotateArray[mid] == rotateArray[start] and rotateArray[mid] == rotateArray[end]:
2021-04-19 15:24:26 124 2
原创 重建二叉树(剑指offer)
重建二叉树题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。示例1输入[1,2,3,4,5,6,7],[3,2,4,1,6,5,7]返回值{1,2,5,3,4,6,7}解题思路代码# class TreeNode:# def __init__(self, x):# s
2021-04-19 11:00:09 86
原创 从尾到头打印链表(剑指offer)
从尾到头打印链表题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。示例1输入{67,0,24,58}返回值[58,24,0,67]代码递归 def printListFromTailToHead(self, listNode): #递归 result = [] def solution(node): if node: solution(node.next)
2021-04-18 23:52:44 86
原创 二维数组中的查找(剑指offer)
[编程题]二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target = 7,返回 true。给定 target = 3,返回 false。解题思路:代码:def Find(self, target, array):
2021-04-16 23:13:18 171
转载 空洞卷积(dilated convolution)
论文:Multi-scale context aggregation with dilated convolutions简单讨论下dilated conv,中文可以叫做空洞卷积或者扩张卷积。首先介绍一下dilated conv诞生背景,再解释dilated conv操作本身,以及应用。首先是诞生背景,在图像分...
2020-02-03 16:54:35 466
转载 深度学习优化算法解析(Momentum, RMSProp, Adam)
深度学习的优化算法主要有GD,SGD,Momentum,RMSProp和Adam算法吧,还有诸如Adagrad算法,不过大同小异,理解了前面几个,后面的也就引刃而解了。GD算法,SGD算法以及mini-batch SGD算...
2020-02-03 13:31:25 1157
原创 V-Net论文理解(PPT形式)
V-Net写在开头: 决定开一个新的专栏,用来记录自己读论文后的一些整理总结,主要以ppt的形式展示,这里我只放图片,有需要可以私信我.论文:V-Net:Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation链接: https://pan.baidu.com/s/1n4Nj_WypquLY...
2020-01-07 18:52:07 817
原创 数据库中的连接算法Join的磁盘I/O需求
数据库中的连接算法Join的磁盘I/O需求1 嵌套循环连接Iteration join1.1 基于元组、非聚簇1.2 基于块、聚簇2 基于排序的连接Merge Join2.1 有序、聚簇、基于块2.1 无序、聚簇、基于块3 基于索引的连接Index Join3.1 普通Index Join3.2 部分常驻内存4 基于哈希的连接Hash Join4.1 普通Hash Join4.2 混合Ha...
2019-12-05 22:23:16 808
原创 pycharm中python环境设置
pycharm中添加新的conda中的python环境1. File -> Settings2. Project Interpreter -> *3. Add4. Conda Environment -> Existing environment -> 。 -> python
2019-11-29 18:47:43 690 1
swin-tiny-patch4-window7-224-22kto1k-finetune
2023-08-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人