leetcode
qq_36950604
这个作者很懒,什么都没留下…
展开
-
剑指 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 · 219 阅读 · 0 评论 -
动态规划之编辑距离
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 · 215 阅读 · 0 评论 -
二叉树最大路径和(hard)
二叉树最大路径和题目:????分析:这个分析思路来源于leetcode上一个非常清晰的解析。链接在这https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/comments/@丁玉松根据当前节点的角色,路径和可分为两种情况:以当前节点为根节点 当前节点为最大值 当前节点+左子树为最大值 当前节点+右子书为最大值 当前节点+左子树+右子树为最大值 以当前节点为父节点的一个子节点(和父节点连接需原创 2021-04-02 21:13:18 · 306 阅读 · 0 评论 -
无序数组找重复数字
参考链接????的第4种方法,非常巧妙!原创 2021-03-31 20:56:40 · 832 阅读 · 0 评论 -
寻找第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 · 80 阅读 · 0 评论 -
岛屿数量问题
题目描述(????)算法思想:遍历矩阵(i, j)。如果该元素为岛屿,岛屿数量+1,接着深度遍历该元素;深度遍历逻辑:首先将该元素置为水域 分别判断该元素的周围位置是否为岛屿。如果为岛屿,则对该位置进行深度遍历中心思想:边遍历边修改矩阵,非常棒!!!class Solution: def numIslands(self, grid: List[List[str]]) -> int: ''' 主函数 遍历矩阵元素 为岛屿则df原创 2021-03-31 16:57:05 · 202 阅读 · 0 评论 -
非递归遍历树(前中后)
1. 中序遍历思路栈存储节点 head指向当前遍历节点 循环中入栈(先、后都是先入栈再循环) head非空时,一直往左走; head为空时, 弹出栈顶,访问元素 往右走2. 先序遍历 and 后序遍历思路先序和后续的区别 共同点 1个栈 2个栈 先pop节点 访问节点 再append非空子节点 先right再left 先left再right 栈中的元素pop就访问 栈中的元素pop后进入第二...原创 2021-03-30 20:18:30 · 83 阅读 · 0 评论 -
并查集
今天接了字节数据开发实习的一面,面试官问了我一个类似于计算无向图的连通分量数量的代码题,面试官引导我往图方面想,当时没撕出来,还是对图算法不熟悉!想的是通过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 · 87 阅读 · 0 评论 -
判断回文数
算法思路:例如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 · 98 阅读 · 0 评论 -
动态规划——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 · 94 阅读 · 0 评论 -
动态规划——最长公共子串
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 · 112 阅读 · 0 评论 -
股票买卖问题总结
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 · 108 阅读 · 0 评论 -
图之最短路径
一说到最短路径,啊,多么痛的领悟,我始终过不去这道坎!总是忘了,最近春招了,记下来吧!!方法一 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 · 111 阅读 · 0 评论 -
剑客-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 · 78 阅读 · 0 评论 -
丑数
看到这题完全没有什么思路啊学习到一种优秀的题解。只包含2, 3, 5质因子的数,另一种含义就是,只该数由2,3,5任意的组合乘积可以得到。。。2,3,5分别用3个索引指示接下来需要乘积的位置。每次取三个质因子得到的数的最小值(有序的插入到结果集中)循环判断部分主要是为了排序后,跳过质因子得到相同元素,记住:一定不能if... elif...。每个if都要判断,都有可能进去的。 def GetUglyNumber_Solution(self, index): #原创 2021-03-01 13:47:56 · 95 阅读 · 0 评论 -
大根堆
# -*- 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 · 110 阅读 · 0 评论 -
leetcode-292 Nim游戏 (脑筋急转弯)
问题描述:你和你的朋友,两个人一起玩Nim 游戏:桌子上有一堆石头。你们轮流进行自己的回合,你作为先手。每一回合,轮到的人拿掉1 - 3 块石头。拿掉最后一块石头的人就是获胜者。假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/nim-game著作权归领扣网络所有。商业转载请联..原创 2021-02-05 11:01:51 · 437 阅读 · 0 评论 -
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 · 66 阅读 · 0 评论 -
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 · 75 阅读 · 0 评论 -
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 · 114 阅读 · 0 评论 -
leetcode-169 多数元素
https://leetcode-cn.com/problems/majority-element/submissions/问题描述参考上方链接学到了一种新算法Boyer-Moore 投票算法,这种算法对于多数元素这个问题解决得非常完美,不知道它还可以在哪些问题上应用。。。思想:寻找数组中超过一半的数字,这意味着数组中其他数字出现次数的总和都是比不上这个数字出现的次数。即如果把 该众数记为 +1 ,把其他数记为 −1 ,将它们全部加起来,和是大于 0 的。应用变量candidate记录当前众数候原创 2021-02-01 22:31:42 · 103 阅读 · 0 评论 -
leetcode--148 链表排序
题目: 用nlog(n) 的时间复杂度,实现链表的排序思路: 列表或者数组可以直接用归并排序来做,但是链表没法做,因为链表只有顺序关系,很难定位到一个元素(中点)。在这里需要对归并排序做一些改动tip:如何定位到链表中点?———双指针法双指针法。没错,就是之前判断链表有环的方法。一个指针走一步,一个指针走两步,当快指针走到头时,慢指针的前一个节点就是中点元素找到中点元素就好办了! 归并!class Solution: ''' 这段代码 太美了!!!! 赞 '原创 2021-01-31 19:45:30 · 84 阅读 · 0 评论 -
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 · 123 阅读 · 0 评论