算法题汇总专栏
文章平均质量分 79
jianafeng
这个作者很懒,什么都没留下…
展开
-
Leetcode腾讯算法题 -- 刷 出题指数为3颗星以上的题目 --第四部分
目录标题问题一:LT146. LRU 缓存机制先了解什么是LRU哈希表+链表实现缓冲问题二:LT394. 字符串解码题目三:LT:148. 排序链表题目四:23. 合并K个升序链表问题一:LT146. LRU 缓存机制先了解什么是LRULRU的英文全称是Least Recently Used,也即最不经常使用。我们看着好像挺迷糊的,其实这个含义要结合缓存一起使用。对于工程而言,缓存是非常非常重要的机制,尤其是在当下的互联网应用环境当中,起到的作用非常重要。为了便于大家更好地理解,我们从缓存的机制开始说原创 2021-07-21 00:26:03 · 290 阅读 · 1 评论 -
二叉树的深度与宽度的python解法
目录标题LT38 二叉树的深度LT662 二叉树最大宽度LT38 二叉树的深度递归法:# 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:原创 2021-07-11 21:19:03 · 585 阅读 · 0 评论 -
腾讯算法面试题补充
目录标题LT692:前K个高频单词剑指 Offer 29. 顺时针打印矩阵数据结构问题--堆LT692:前K个高频单词给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序方法一:堆排序class Solution: def topKFrequent(self, words: List[str], k: int) -> List[str]: import heapq原创 2021-07-11 21:15:53 · 194 阅读 · 1 评论 -
关于遍历二叉树-递归方法以及非递归方法
目录标题层次遍历(非递归)前序遍历(非递归)前序遍历(递归)中序遍历(非递归)中序遍历(递归)后序遍历(非递归)后序遍历(递归)层次遍历(非递归)LT102: 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.v原创 2021-07-10 14:38:46 · 91 阅读 · 0 评论 -
Leetcode腾讯算法题 -- 刷 出题指数为3颗星以上的题目 --第三部分
目录题目一:LT169. 多数元素题目二:LT26. 删除有序数组中的重复项题目三:LT344. 反转字符串题目四:121. 买卖股票的最佳时机题目五:LT53. 最大子序和题目六:最长递增子序列题目七:LT88. 合并两个有序数组题目八:LT292. Nim 游戏题目九:LT160. 相交链表题目一:LT169. 多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素最简单的方法原创 2021-06-21 02:22:07 · 304 阅读 · 1 评论 -
Leetcode腾讯算法题 -- 刷 出题指数为3颗星以上的题目 --第二部分
目录题目一:LT215-数组中的第K个最大元素题目二:LT20. 有效的括号题目三:LT394. 字符串解码题目四:LT8. 字符串转换整数 (atoi)题目五:LT7. 整数反转题目六:LT9. 回文数题目七:LT33. 搜索旋转排序数组题目八:LT43. 字符串相乘题目九:LT43 dp编辑距离问题十:LT136. 只出现一次的数字题目一:LT215-数组中的第K个最大元素在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素原创 2021-06-20 21:51:31 · 230 阅读 · 1 评论 -
Leetcode腾讯算法题 -- 刷 出题指数为3颗星以上的题目 --第一部分
目录序言题目一:LT1-两数之和序言最近找实习,每次都在算法题这里翻车,我实在太不甘心,理论上的知识点我已经很尽力,但是算法题刷的太少。所以我打算把Leetcode中腾讯的 刷出题指数为3颗星以上的题目 刷一次。题目一:LT1-两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标输入:nums = [2,7,11,15], target = 9输出:[0,1]输入:nums = [3,2,原创 2021-06-19 11:47:48 · 276 阅读 · 0 评论 -
Python-从有序数组中寻找第K大值以及类似题--字节算法题
题目一:LT215-无序数组的第K个元素题目:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素输入: [3,2,1,5,6,4] 和 k = 2输出: 5输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4首先需要做的是找一个方法做排序,让arr有序。可以用快速排序来做,排完了之后的第L-k+1个数首先回忆快速排序的方法快速排序的算法首先是partition 函数 找中间区间的位置。def原创 2021-06-12 02:44:55 · 896 阅读 · 2 评论 -
几种典型的排序方法以及python实现
序言这里好好好总结三种比较经典的排序方法。(1)冒泡排序比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。def bubbleSort(arr): for i in range(1, len(arr)): for j in range(0, len(arr)-原创 2021-06-10 15:12:10 · 261 阅读 · 2 评论 -
链表题目汇总
序言努力汇总链表题目,好好干饭,好好努力,好好加油哦题目一:删掉链表的某一个node实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点)输入:删除单向链表a->b->c->d->e->f中的节点c结果:不返回任何数据,但该链表变为a->b->d->e->f链表中的每一个node有两个属性 一个是 val 一个是next表方向所以想要删掉某特定的node,只要改变这个node的这两个属性,使之变成下一个node的两个属原创 2021-06-10 01:47:35 · 798 阅读 · 0 评论 -
二分查找汇总
序言下面都是lt的关于二分查找的题目。 好好干饭,好好努力,好好加油哦!题目一:最长公共前缀找到几个字符串中最长公共前缀。例子:Input: ["flower","flow","flight"]Output: "fl"Input: ["dog","racecar","car"]Output: ""二分法思路:把长度最小的 字符串 折半,比如第一个例子,最小长度的是flow,长度为4. 这样子不行,查询最小长度时间更久来,直接拿第一个字符串作为比较标准。bgn = 0; end原创 2021-06-10 01:45:44 · 112 阅读 · 0 评论 -
双指针题目汇总
序言下面都是lt的关于双指针查找的题目。 好好干饭,好好努力,好好加油哦!题目一:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度思路是:怎么用双指针来做这道题呢?首先肯定是p,q=0,1.把排序数组的前两位霸占先。然后开始比较,如果p,q对应的数字相等的话,那么q往后退一位。继续比较nums[p] , nums[q]如果不相等的话,就把nums[q] 赋值到nums[p+1], 同时 p和q都往后退一位。重复操作,直到q >=len(原创 2021-06-09 02:40:00 · 469 阅读 · 0 评论 -
哈希表题目汇总
序言哈希表题目汇总,好好干饭,好好努力,好好加油哦题目一:检查数组中是否有有两个数相加 等于目标值给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 哈希表是 组成一个字典将原创 2021-06-01 15:00:20 · 1125 阅读 · 0 评论 -
动态规划题目汇总
序言汇总动态规划的题目 这部分可多了。题目一:古生物血缘远近判定DNA 是由 ACGT 四种核苷酸组成,例如 AAAGTCTGAC,假定自然环境下 DNA 发生异变的情况有:基因缺失一个核苷酸基因新增一个核苷酸基因替换一个核苷酸且发生概率相同输入:ACT,AGCT输出:1如果格子对应的字符相同,则 p1 = 左上方格子的数值,如果不相同,则p1 = 左上方格子的数值+1p2 = 左边格子数值 加一p3 = 上方格子数值 加一最后该格子的数值 = min(p1,p2,p3)i原创 2021-06-01 03:48:41 · 1040 阅读 · 1 评论 -
最大矩阵问题lt84+lt85
序言总结最大矩阵的两道相似问题题目一:lt84给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积思路是:用stack存起所有的index,如果遇到比 stack[-1] 位置上高度 小的,即可算出stack[-1] 位置上的最大面积。然后pop掉 。def largestRectangleArea(heights): heights = [0] + heights + [0] n= len(heights)原创 2021-05-31 22:09:16 · 211 阅读 · 0 评论 -
关于树和回溯题目汇总
序言关于树和回溯题目汇总,好好干饭,好好努力,好好加油哦!题目一:二叉树返回所有节点值给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)二叉树:[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7输出:[ [3], [9,20], [15,7]]思路:将每一层的数字都录进去,这里需要两个列表来做,一个stack是录入每一层的数字,然后变空集再录入另一层。原创 2021-05-31 02:05:43 · 337 阅读 · 0 评论