力扣题专题

力扣题/回溯/子集

子集 力扣原题 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 示例 2: 输入:nums = [0] 输出:[[],[0]]

力扣题/图论/实现 Trie (前缀树)

实现 Trie (前缀树) 力扣原题 Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。 请你实现 Trie 类: Trie() 初始化前缀树对象。 void insert(String word) 向前缀树中插入字符串 word 。 boolean search(Str

Offer必备算法37_记忆化搜索_五道力扣题详解(由易到难)

目录 记忆化搜索概念和使用场景 ①力扣509. 斐波那契数 解析代码1_循环 解析代码2_暴搜递归 解析代码3_记忆化搜索 解析代码4_动态规划 ②力扣62. 不同路径 解析代码1_暴搜递归(超时) 解析代码2_记忆化搜索 解析代码3_动态规划 ③力扣300. 最长递增子序列 解析代码1_爆搜递归(超时) 解析代码2_记忆化搜索 解析代码3_动态规划 ④力扣375.

穿越障碍:最小路径和的高效算法比较【python力扣题64】

作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 欢迎加入社区:码上找工作 作者专栏每日更新: LeetCode解锁1000题: 打怪升级之旅 python数据分析可视化:企业实战案例 备注说明:方便大家阅读,统一使用python,带必要注释,公众号 数据分析螺丝钉 一起打怪升级 题目描述 给定一个包含非负整

python5种算法模拟螺旋、分层填充、递归、迭代、分治实现螺旋矩阵ll【力扣题59】

作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 欢迎加入社区:码上找工作 作者专栏每日更新: LeetCode解锁1000题: 打怪升级之旅 python数据分析可视化:企业实战案例 备注说明:方便大家阅读,统一使用python,带必要注释,公众号 数据分析螺丝钉 一起打怪升级 题目描述 给你一个正整数 n

用队列来实现栈-力扣题

发现自己做这种题,真的是太慢了,不过做出来就很开心了。自己在做的时候,没有想到交换队列v1和v2这一步,其实直接交换,就不需要判断应该从v1还是v2入队了。始终保证空队列为固定不变的队列。 题目: 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通队列的全部四种操作(push、top、pop 和 empty)。 要求: 你只能使用队列的基本操作 —— 也就是 push to back、

最长公共子序列力扣题

动态规划。 美团暑期面试题,没做过,不会啊。 这个问题的目标是找出两个字符串text1和text2的最长公共子序列的长度。 动态规划数组的初始化 首先,代码初始化了一个动态规划(DP)数组dp,其维度为(m + 1) x (n + 1),其中m和n分别是text1和text2的长度。这个DP数组用于存储子问题的解,dp[i][j]表示text1的前i个字符和text2的前j个字符的最长公共子

Offer必备算法12_链表_五道力扣题详解(由易到难)

目录 ①力扣2. 两数相加 解析代码 ②力扣24. 两两交换链表中的节点 解析代码 ③力扣143. 重排链表 解析代码 ④力扣23. 合并 K 个升序链表 解析代码1(小根堆优化) 解析代码2(递归_归并) ⑤力扣25. K 个一组翻转链表 解析代码 本篇完。 ①力扣2. 两数相加 2. 两数相加 难度 中等 给你两个 非空 的链表,表示两个非负的整数。它们

Offer必备算法11_斐波那契dp_四道力扣题详解(由易到难)

目录 动态规划dp算法原理 ①力扣1137. 第 N 个泰波那契数 解析代码1 解析代码2 ②力扣面试题 08.01. 三步问题 解析代码 ③力扣746. 使用最小花费爬楼梯 解析代码1 解析代码2 ④力扣91. 解码方法 解析代码1 解析代码2 本篇完。 动态规划dp算法原理         动态规划(Dynamic Programming)算法的核心思想是

【Python3】【力扣题】389. 找不同

【力扣题】题目描述: 【Python3】代码: 1、解题思路:使用计数器分别统计字符串中的元素和出现次数,两个计数器相减,结果就是新添加的元素。 知识点:collections.Counter(...):字典子类,计数器,统计各元素及出现次数。               list(...):转为列表。               列表[索引]:获取列表中索引号对应的元素。 c

力扣题——2645.构造有效字符串的最少插入数

题目 给你一个字符串 word ,你可以向其中任何位置插入 "a"、"b" 或 "c" 任意次,返回使 word 有效 需要插入的最少字母数。 如果字符串可以由 "abc" 串联多次得到,则认为该字符串 有效 。 第一想法用一个栈存放进栈的a,b,到c时出栈,不是则补a,b,c就行了。 然后一想,栈里面不就只有三种情况吗,没有字母,只有a,只有a和b,那不就可以直接用一个int表示吗,

力扣题:高精度运算-1.4

力扣题-1.4 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:306. 累加数 解题思想:首先先通过secondStart和secondEnd可以确定num1 = num[0:secondStart],num2 = num[secondStart:secondEnd],然后遍历secondStart和secondEnd进行第二个数字的提取,然后通过check函数进行判断是否合法。

力扣题:数字与字符串间转换-12.22

力扣题-12.22 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:12. 整数转罗马数字 解题思想:首先构建字符和数值的映射(考虑特殊情况),然后从大到小进行遍历即可 class Solution(object):def intToRoman(self, num):""":type num: int:rtype: str"""dic = [(1000, "M"),(900,

力扣题:子序列-12.30

力扣题-12.30 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:66. 加一 解题思想:注意保存加一的flag逐位向前计算即可 class Solution(object):def plusOne(self, digits):""":type digits: List[int]:rtype: List[int]"""flag = 1for i in range(len(d

力扣题:数字与字符串间转换-12.18

力扣题-12.18 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:38. 外观数列 解题思想:进行遍历然后对字符进行描述即可 class Solution(object):def countAndSay(self, n):""":type n: int:rtype: str"""if n==1:return "1"temp = "1"for i in range(n-1):

力扣题:数字与字符串间转换-12.11

力扣题-12.11 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:506. 相对名次 解题思想:进行排序即可 class Solution(object):def findRelativeRanks(self, score):""":type score: List[int]:rtype: List[str]"""n=len(score)answer=[0]*nscore1

力扣题:数字与字符串间转换-12.11

力扣题-12.11 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:506. 相对名次 解题思想:进行排序即可 class Solution(object):def findRelativeRanks(self, score):""":type score: List[int]:rtype: List[str]"""n=len(score)answer=[0]*nscore1

力扣题:数字与字符串间转换-12.8

力扣题-12.8 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:299. 猜数字游戏 解题思想:进行遍历,统计完全相同的数字和不相同的数字即可,然后统计不相同的数字在秘密数字和猜测数字中共同出现的次数 class Solution(object):def getHint(self, secret, guess):""":type secret: str:type guess

【Python3】【力扣题】383. 赎金信

【力扣题】题目描述: 题解: 两个字符串ransomNote和magazine,ransomNote中每个字母都在magazine中一一对应(顺序可以不同)。 即分别统计两个字符串中每个字母出现的次数,ransomNote中每个字母的个数小于等于magazine中该字母对应的个数。 【Python3】代码: 1、解题思路:使用collections.Counter()分别统计

力扣题:字符的统计-12.7

力扣题-12.7 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:467. 环绕字符串中唯一的子字符串 解题思想:记录下以字母s[i]结尾的最大的字串个数,然后统计a-z每个字母结尾的最大字串的个数进行i相加 class Solution(object):def findSubstringInWraproundString(self, s):""":type s: str:r

力扣题(6) —— z字形变换

z字形变换 题目描述 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下: P A H N A P L S I I G Y I R 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。 请你实现这个将字符串进行指定行数变

力扣题:字符串的反转-11.24

力扣题-11.24 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:151. 翻转字符串里的单词 解题思想:保存字符串中的单词即可 class Solution(object):def reverseWords(self, s):""":type s: str:rtype: str"""word_list = s.split()result = ""for i in range

[力扣题]1.判断一棵树是否是平衡二叉树

1.判断一棵树是否是平衡二叉树  1.1 题目描述   给你一棵二叉树的根节点 root ,请你判断这棵树是否是一棵 完全二叉树 。 在一棵 完全二叉树 中,除了最后一层外,所有层都被完全填满,并且最后一层中的所有节点都尽可能靠左。最后一层(第 h 层)中可以包含 1 到 2h 个节点 题目思路,创建一个队列,把每棵树的根节点还有它的左子树和右子树依次放进去.在依次弹出. 直到遇到

力扣题:字符串的反转-11.24

力扣题-11.24 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:151. 翻转字符串里的单词 解题思想:保存字符串中的单词即可 class Solution(object):def reverseWords(self, s):""":type s: str:rtype: str"""word_list = s.split()result = ""for i in range

【Python3】【力扣题】349. 两个数组的交集

【力扣题】题目描述: 【Python3】代码: 1、解题思路:集合的交集。两个数组都转为集合,获取集合的交集。 知识点:set(...):转为集合,集合的元素不重复。               集合1.intersection(集合2):获取两个集合都有的元素,即两集合的交集。也可以:集合1 & 集合2。               list(...):转为列表。 class

数据结构-单链表-力扣题

目录 移除链表元素 反转链表 链表的中间节点 返回倒数第k个节点  合并两个有序列表  分割链表 链表的回文结构  相交链表:找两个链表的公共节点 环形链表:判断链表中是否有环  环形链表 II:要求返回入环的第一个节点 移除链表元素 题目链接:力扣(LeetCode) 思路:和前面学的单链表的中间删除数据一样,使要被删除节点的前一个节点指向下要被删除节点的下一