自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指 Offer 61. 扑克牌中的顺子

easy版的题,值得注意的是理解题意:1. 除大小王之外,不能有重复的牌2. 除大小王之外,最大值和最小值之差应<5:代表着最大值和最小值之间的最大空隙是可以用大小王填充的,或者没有大小王的情况下,其本身就是连续的顺子链接????class Solution: def isStraight(self, nums: List[int]) -> bool: nums = sorted(nums) zero_num = 0

2021-04-06 20:50:51 134

原创 动态规划之编辑距离

hard题,看上去就挺可怕的,仔细一想想觉得很清晰,希望自己早日能达到这种逻辑。题目????算法思路题解思路链接????状态: dp[i, j] i代表【0,i】的word1 j代表【0,j】的word2 dp[ i ][ j ]表示word1[ 0 : i ] 和word2[ 0 : j ] 选择: 插入一个字符串 dp[ i ][ j - 1 ] + 1 删除一个字符串 dp[ i - 1 ][ j ] + 1 替换一个字符串 dp[ i - 1 ][...

2021-04-06 11:52:41 140

原创 二叉树最大路径和(hard)

二叉树最大路径和题目:????分析:这个分析思路来源于leetcode上一个非常清晰的解析。链接在这https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/comments/@丁玉松根据当前节点的角色,路径和可分为两种情况:以当前节点为根节点 当前节点为最大值 当前节点+左子树为最大值 当前节点+右子书为最大值 当前节点+左子树+右子树为最大值 以当前节点为父节点的一个子节点(和父节点连接需

2021-04-02 21:13:18 199

原创 无序数组找重复数字

参考链接????的第4种方法,非常巧妙!

2021-03-31 20:56:40 719

原创 寻找第k大的数

题目:????算法思想:利用快排的左右元素排挤划分的思想。假设数组大小为n, 要求得到第k个元素。确定第一个元素的放置位置; 如果位置<(n-k), 那就要往右区间再进一步搜索; 如果位置>(n-k), 那就要往左区间进一步搜索。 直到当前确定到index = n-k的元素, 直接返回该位置的元素即可。class Solution: def findKthLargest(self, nums, k: int) -> int: #

2021-03-31 20:31:57 58

原创 岛屿数量问题

题目描述(????)算法思想:遍历矩阵(i, j)。如果该元素为岛屿,岛屿数量+1,接着深度遍历该元素;深度遍历逻辑:首先将该元素置为水域 分别判断该元素的周围位置是否为岛屿。如果为岛屿,则对该位置进行深度遍历中心思想:边遍历边修改矩阵,非常棒!!!class Solution: def numIslands(self, grid: List[List[str]]) -> int: ''' 主函数 遍历矩阵元素 为岛屿则df

2021-03-31 16:57:05 159

原创 非递归遍历树(前中后)

1. 中序遍历思路栈存储节点 head指向当前遍历节点 循环中入栈(先、后都是先入栈再循环) head非空时,一直往左走; head为空时, 弹出栈顶,访问元素 往右走2. 先序遍历 and 后序遍历思路先序和后续的区别 共同点 1个栈 2个栈 先pop节点 访问节点 再append非空子节点 先right再left 先left再right 栈中的元素pop就访问 栈中的元素pop后进入第二...

2021-03-30 20:18:30 51

原创 并查集

今天接了字节数据开发实习的一面,面试官问了我一个类似于计算无向图的连通分量数量的代码题,面试官引导我往图方面想,当时没撕出来,还是对图算法不熟悉!想的是通过DFS遍历,需要遍历几次DFS能够遍历所有的节点,那么就有几个连通分量。后面在网上又搜集到了一种新的解题思路,所以在这里记录学习一下。题目:一下2维列表中[0, 1]表示 0关注1 ,【3, 2】表示3关注2,【3, 4】表示3关注4,那么【3,2,4】应该属于一个社交圈,现有以下2维列表,求出共有多少个社交圈(连通图)[[0, 1]

2021-03-29 23:07:49 63

原创 判断回文数

算法思路:例如x = 1223221 , 目的是取到末尾的3221 并且把 3221 翻转为 1223 。reverseNumber记录翻转的后半段数字。在循环条件x > reverseNumber的条件下,一旦x等于或者小于 后半段的时候,退出循环。否则,把当前的reverseNumber统统往前移一位,给将来的x个位数腾个地,接着x会丢掉它的个位数,这样便完成了一次交换!def isPalindrome(x): x = abs(x) if x % 10 =.

2021-03-25 21:03:26 69

原创 动态规划——0-1背包问题

代码如下:状态: 可选择的物品、可装的重量选择:装 or 不装d[i][w]:表示在前i个物品可选的情况下,可装重量为w的情况下,最大的价值class Solution: def bagFunc(self, w, n, weight, val ): dp = [[0] * w for i in range(n)] for i in range(n):# 遍历物品 状态1 for w in range(w): # 遍历能承..

2021-03-24 17:48:12 73

原创 动态规划——最长公共子串

def find_lcsubstr(s1, s2): # dp矩阵 m = [[0]*len(s2) for j in range(len(s1))] # 记录最大的公共子串长度 nmax = 0 # 记录最大的公共子串长度的结尾索引 p = 0 for i in range(len(s1)-1): for j in range(len(s2)-1): if s1[i] == s2[j]: .

2021-03-24 14:48:06 89

原创 股票买卖问题总结

1.Best Time to Buy and Sell Stock????class Solution: def maxProfit(self, prices: List[int]) -> int: # 先暴力 # summ = 0 # for i in range(len(prices)-1): # for j in range(i+1, len(prices)): # sum

2021-03-22 18:51:26 85

原创 HTTPs原理图

2021-03-15 22:37:22 81

原创 图之最短路径

一说到最短路径,啊,多么痛的领悟,我始终过不去这道坎!总是忘了,最近春招了,记下来吧!!方法一 DFS(深度优先)(求单源距离最短)(暴力解决)(回朔!!!)自己看代码吧简单的话总结一下就是:若节点数为n ,建立好邻接矩阵(n+1 * n+1 )(初始化[i][i] = 0;没有边的节点=inf;)、访问矩阵(n+1) (初始化[i] = 0 )。在这里说一下为啥大小为(n+1),这个看你输入的节点编号定义是从哪里开始的(随题意走)。如果从1开始,建议n+1然后从节点1开始回朔递归,直到...

2021-03-14 14:30:09 83

原创 剑指--和为s的连续正数序列

刚好复习一下滑动窗口算法。只有做题才能融汇贯通嘛题链接:https://www.nowcoder.com/practice/c451a3fd84b64cb19485dad758a55ebe?tpId=13&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey滑动窗口学习算法链接:https://mp.weixin.qq.com/s/ioKXTMZufDECBUwRRp3zaA方法一:

2021-03-04 15:32:27 77 1

原创 剑指——二分查找最左边界和最右边界

学习链接:https://mp.weixin.qq.com/s/M1KfTfNlu4OCK8i9PSAmug直接上代码吧,为了巩固记忆,方便下次查看我是在练习剑指37中遇到的这题,思想是:找到k在数组中的上下边界,顺便可以算出k的出现次数class Solution: def GetNumberOfK(self, data, k): # write code here # hashMap 1 # 二分法? 找到最左边的k. 找到最右边的k

2021-03-03 15:21:44 227 1

原创 剑客-35 逆序对

暴力是解不开的...hard级别的题,果然得来点技巧。。。启发:采用归并的思想 具体怎么归并呢? [7, 3] 和 [2,8]. 7> 2 res+=1 ; 3 > 2 res+=1 归并的同时顺便排序呢?[3, 7] 和[2, 8]. 由于 3 > 2 ,所以res+=2. 因为第一个数组len = 2,最小为3>2时,所以 res+=len(第一个数组) 给子数组排好序 上代码。# -*- coding:utf-8 -*-cla...

2021-03-01 15:20:50 54

原创 丑数

看到这题完全没有什么思路啊学习到一种优秀的题解。只包含2, 3, 5质因子的数,另一种含义就是,只该数由2,3,5任意的组合乘积可以得到。。。2,3,5分别用3个索引指示接下来需要乘积的位置。每次取三个质因子得到的数的最小值(有序的插入到结果集中)循环判断部分主要是为了排序后,跳过质因子得到相同元素,记住:一定不能if... elif...。每个if都要判断,都有可能进去的。 def GetUglyNumber_Solution(self, index): #

2021-03-01 13:47:56 73

原创 大根堆

# -*- coding:utf-8 -*-class Solution: def GetLeastNumbers_Solution(self, tinput, k): # write code here if k >len(tinput): return [] data = sorted(tinput) return data[:k] # 乘机复习一下堆排序内容 .

2021-02-23 19:47:51 76

原创 牛客-sql18 非order by 查找第N

题目:sql18思路一:查找原表最高工资 查找除原表最高工资的情况下,查找原表第二高工资 筛选工资等于第二高工资的人员信息select s.emp_no, s.salary, e.last_name, e.first_namefrom salaries s join employees eon s.emp_no = e.emp_nowhere s.salary = -- 第三步: 将第二高工资作为查询条件 ( select max(sa.

2021-02-22 14:27:34 68

原创 天池比赛——docker提交

docker最近刚接触,在这里总结一下相关用法以及一些坑docker初步使用本地安装docker,官网下载dmg,拖动即可 创建远程镜像仓库(远程阿里云容器镜像服务-free) 登录阿里云后,创建命名空间 创建镜像仓库(代码源为本地仓库) 本地命令行登录阿里云容器镜像服务 本地构建镜像并推送远程仓库 创建一个文件夹,存放比赛容器镜像所需文件 在新文件夹中创建镜像文件:Dockerfile 、run.sh、可运行文件、requirement.txt以及赛事要求的文件 构建镜像

2021-02-21 16:21:17 480

原创 剑指-25 复杂随机链表的深拷贝

在来做题目之前,需要了解两个概念——浅拷贝和深拷贝浅拷贝:只新增对象的引用,而不会复制对象本身 深拷贝:复制对象本身在Python中关于浅拷贝和深拷贝的区别,还有更加深刻的解释,在此不赘述,可自行百度。就本题而言,够了。一开始做这道题没有读清楚题意,鉴于对深拷贝的理解,所以采用了递归,但不可行。在这里每个节点都含有next对象和random对象,random指向的对象是存在于next链表中的,换一句话说,就是链表有环,所以递归复杂了。在这里总结一下大神题解的思路。第一次next遍历,造出

2021-02-19 17:44:06 66

原创 剑指-23 二叉搜索树的后续遍历判断

class Solution: def VerifySquenceOfBST(self, sequence): # write code here # 如果 遍历序列为空 返回False if not sequence or not len(sequence): return False # 开始 return self.verify(sequence, 0, len(sequence)-1).

2021-02-17 22:23:13 72 1

原创 leetcode-292 Nim游戏 (脑筋急转弯)

问题描述:你和你的朋友,两个人一起玩Nim 游戏:桌子上有一堆石头。你们轮流进行自己的回合,你作为先手。每一回合,轮到的人拿掉1 - 3 块石头。拿掉最后一块石头的人就是获胜者。假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/nim-game著作权归领扣网络所有。商业转载请联..

2021-02-05 11:01:51 373

原创 leetcode-238 除自身以外数组的乘积

leetcode链接:https://leetcode-cn.com/problems/product-of-array-except-self/问题描述:给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。算法思路:用L列表记录每个元素左边的乘积 L[i] = L[i-1] * nums[i-1],其中L[0]初始化成1。用R列表记录每个元素右边的乘积R[i.

2021-02-04 22:27:27 43

原创 leetcode-235 二叉树(二叉搜索树)的最近公共祖先

一开始看到这道题,思路不太清楚,然后对着前序遍历的结果和中序遍历的结果琢磨了一遍,发现了规律,才勉强写出来比较冗余的代码(后面有比较好的思路)思路:得到中序遍历和先序遍历的结果后,分两种情况判断公共节点。情况1: p q被根节点分开, 直接返回根节点;情况2: p q在根节点同一侧,遍历先序遍历的结果,返回最先在pq之间的节点# class TreeNode:# def __init__(self, x):# self.val = x# self.l.

2021-02-03 18:42:01 52

原创 leetcode-206 反转链表

递归反转链表,还有迭代?? 代码待补充# 自己写的# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def reverseList(self, head: ListNode) -> ListNode: if not head: return

2021-02-01 23:12:15 60

原创 leetcode-169 多数元素

https://leetcode-cn.com/problems/majority-element/submissions/问题描述参考上方链接学到了一种新算法Boyer-Moore 投票算法,这种算法对于多数元素这个问题解决得非常完美,不知道它还可以在哪些问题上应用。。。思想:寻找数组中超过一半的数字,这意味着数组中其他数字出现次数的总和都是比不上这个数字出现的次数。即如果把 该众数记为 +1 ,把其他数记为 −1 ,将它们全部加起来,和是大于 0 的。应用变量candidate记录当前众数候

2021-02-01 22:31:42 71

原创 leetcode--148 链表排序

题目: 用nlog(n) 的时间复杂度,实现链表的排序思路: 列表或者数组可以直接用归并排序来做,但是链表没法做,因为链表只有顺序关系,很难定位到一个元素(中点)。在这里需要对归并排序做一些改动tip:如何定位到链表中点?———双指针法双指针法。没错,就是之前判断链表有环的方法。一个指针走一步,一个指针走两步,当快指针走到头时,慢指针的前一个节点就是中点元素找到中点元素就好办了! 归并!class Solution: ''' 这段代码 太美了!!!! 赞 '

2021-01-31 19:45:30 57

原创 leetcode LRU缓存机制

这道题不会,一开始题目都看不懂,直接学习代码吧class LRUCache: def __init__(self, capacity: int): # list 有序记录最近访问的key di记录key value 值 self.li = [] self.di = dict() self.capacity = capacity def get(self, key: int) -> int:

2021-01-31 16:37:48 51

原创 leetcode 142 有环单向链表(是否有环+有环节点返回)

在前面一篇博客提到如何判断单向链表有环的方法,主要有两种:1. set集合判断2. 双指针法(一个走一步,一个走两步,如果有环总会碰到)这篇博客接着上一篇博客,解决leetcode142——返回有环单向链表的入环节点显然set集合同样可以解决该问题,但是需要耗费O(n)的空间复杂度,如果需要寻找更优的时间复杂度,则需要对以上的双指针法进一步改进和分析。这篇题解写的很清晰https://leetcode-cn.com/problems/linked-list-cycle-ii/soluti

2021-01-30 21:39:24 96

原创 leetcode_136 + 141 只出现一次的数字+单链表判断环

set也有很多用,不要只看到了dict的作用只出现一次的数字class Solution: def singleNumber(self, nums: List[int]) -> int: ''' di = {} for i in nums: if i not in di.keys(): di[i] = 1 else: di[i]

2021-01-28 21:36:30 68

原创 leetcode_124 二叉树的最大路径和

给定一个非空二叉树,通过父子之间的连接,求出二叉树的最大路径和。class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = rightclass Solution: def maxPathSum(self, root: TreeNode) -> int:

2021-01-28 19:37:09 56

原创 leetcode—121 最大化股票利益

这道题没有写出来,思路不明确。数学抽象一点,就是求一个数组元素的最大间隔!!!标准思路:用min记录当前最小值,earn = price[i] - min , max记录最大的earndef maxProfit(prices): if len(prices)<=1: return 0 min = prices[0] max = 0 for i in range(len(prices)): if prices[i]<min:

2021-01-26 19:58:53 44

原创 leetcode_104 二叉树的最大深度(树高度)

两种方式实现:1. DFS(递归)2. BFS(队列)# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: #DFS

2021-01-25 22:08:57 38

原创 leetcode_88 原地合并两个数组

class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: """ Do not return anything, modify nums1 in-place instead. """ # 注意 这个题目的要求 nums1 不能换内存地址!!! if n==0: r.

2021-01-25 17:26:55 77

原创 leetcode_78子集(回朔法)

由于leetcode刷过的题,代码不会保存,所以将代码以及做题时的思路记录在此,方便日后整理复习思路class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: self.result = [] if len(nums)==0: return [[]] self.find(nums,0,[]) retur

2021-01-25 16:39:51 54

原创 Leetcode-33 搜索旋转排序数组

111

2021-01-19 18:04:10 43

转载 组队学习之go——变量、常量、枚举

2.变量 、常量、枚举2.1 变量变量,计算机语言能存储计算结果或表示值的抽象概念。可以通过变量名访问,变量名由字母、数字、下划线组成,其中首个字符不能为数字。声明变量的一般形式是使用 var 关键字:var identifier typevar identifier1, identifier2 type变量声明方式:指定变量类型,若没有初始化,数值类型(包括complex64/128)默认零值,bool默认false,字符串默认“”,“var a *int、var a []int、var

2020-12-16 22:30:29 76

原创 hive 常见问题及优化

hive 中 group by ,distinct 、join和map join 的执行原理https://www.jianshu.com/p/4ce73f4d0bd5 Group by 在map的过程中, 以group by 后面的参数作为key来map成键值对,值为聚合函数的值; 在shuffle的过程中,将相同的key分发到同一台机器上。 在reduce的过程中,整合相同key的聚合值 count distinct 把distinct 的列作为key +[group by...

2020-12-16 17:48:36 96

空空如也

空空如也

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

TA关注的人

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