文章目录一、718、最长重复子数组二、1143、最长公共子序列三、1035、不相交的线四、392、判断子序列五、115、不同的子序列六、完整代码所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。一、718、最长重复子数组 思路分析:第一步,动态数组的含义。dp[i][j]dp[i][j]dp[i][j]代表以下标i−1i-1i−1为结尾的nums1,和以下标j−1j-1j−1为结尾的nums2,最长重复子数组长度为dp[i][j]dp[i][j]dp[i][j]。第二步,递推公式。根据dp[i][j]dp[i][j]dp[i][j]的定义,dp[i][
一.哈希1.两数之和题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。示例:输入:nums=[2,7,11,15],target=9输出:[0,1]解释:因为nums[0]+nums[1]==9,返回[0,1]。代码classSolution: deftwoSum(self,nums:List[int],target:int)->List[int]: hash_map={} fori,numinenum
1.基础知识——链表是由指针串联在一起的线性结构分类:(1)单链表:每个节点由数据域与指针域组成{data,next}(2)双链表:每个节点由数据域及指针域(两个指针)组成{data,pre,next}(3)循环链表:节点结构与单链表一致,但是首尾相连存储:内存分布不是连续的链表定义代码※链表优点在于长度不固定,能够实现动态增删,适用于增删频繁但是查询频率比较低的情景Leetcode203.移除链表元素题目链接:https://leetcode.cn/problems/remove-linked-list-elements/description/分析:经典链表操作,主要需要考虑两种场景当前节
文章目录1.怎么设计循环队列?2.数组实现循环队列往期相关文章推荐:1.队列(Queue)2.栈(Stack)之浅谈数组和链表实现栈各自的优缺点3.线性表之链表(LinkedList)4.线性表之顺序表(SequenceList)1.怎么设计循环队列? 循环队列也叫环形队列,可以用数组或循环链表实现,使用场景是在那种只需要固定空间大小,且一直有插入删除的情况。设计循环队列最大的问题是怎么确定队列是空还是满的状态,如果是增加额外变量size记录数据个数,则很容易解决这个问题,不过这里不打算使用size的方式。下面将一步步分析使用数组的方式如何实现,至于循环链表实现队列,看似天然循环,实际还是很
算法沉淀——递归01.汉诺塔问题02.合并两个有序链表03.反转链表04.两两交换链表中的节点05.Pow(x,n)递归是一种通过调用自身的方式来解决问题的算法。在递归算法中,问题被分解为更小的相似子问题,然后通过对这些子问题的解进行组合来解决原始问题。递归算法通常包含两个主要部分:基本情况(BaseCase):定义问题的最小规模,直接解答而不再进行递归。基本情况是递归算法的出口,防止算法陷入无限递归。递归步骤:在问题规模较大时,将问题划分为相似但规模较小的子问题,并通过递归调用解决这些子问题。递归调用自身是递归算法的核心。递归算法在解决许多问题上非常强大,尤其是对于那些可以通过分解为子问题并
题目描述给定一个整数TTT,表示样例数。对于每个样例,给定一个整数nnn,求斐波那契数列的第nnn项。斐波那契数列定义为f(1)=f(2)=1f(1)=f(2)=1f(1)=f(2)=1,f(n)=f(n−1)+f(n−2)f(n)=f(n−1)+f(n−2)f(n)=f(n−1)+f(n−2)。结果对109+710^9+7109+7取模。输入格式第一行一个整数TTT。(1≤T≤1001≤T≤1001≤T≤100)对于每个样例,一个整数nnn。(1≤n≤1001≤n≤1001≤n≤100)输出格式对于每个样例,输出一个整数表示答案。样例输入1235样例输出125思路斐波那契数列是一个非常经典的
有华为OD考试扣扣交流群可加:948025485可上全网独家的欧弟OJ系统练习华子OD、大厂真题绿色聊天软件戳od1336了解系统算法课程华为OD机试,2023C卷最强题解(不断更新)最清晰的题解+注释,最全面的分类总结。华为OD第三方公司以及HR对接注意事项华为OD机试知识点1周速成版——如果考试时间只有1周,不妨看看这篇华为OD笔试2023C卷命题规律解读Py/Java/C++三种语言ACM模式输入输出总结【大厂笔试/OD机考】文章目录栈常规栈单调栈队列(题目极少,几乎不考)哈希哈希集合哈希表前缀和双指针同向双指针相向双指针贪心常规贪心题目结合双指针区间类贪心滑动窗口固定滑窗不定滑窗二分查
文章目录一、题目二、题解一、题目Thereareseveralconsecutivehousesalongastreet,eachofwhichhassomemoneyinside.Thereisalsoarobber,whowantstostealmoneyfromthehomes,butherefusestostealfromadjacenthomes.Thecapabilityoftherobberisthemaximumamountofmoneyhestealsfromonehouseofallthehousesherobbed.Youaregivenanintegerarraynum
算法沉淀——穷举、暴搜、深搜、回溯、剪枝综合练习一01.全排列02.子集03.找出所有子集的异或总和再求和04.全排列II05.电话号码的字母组合01.全排列题目链接:https://leetcode.cn/problems/permutations/给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。示例1:输入:nums=[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例2:输入:nums=[0,1]输出:[[0,1],[1,0]]示例3:输入:nums=[1]输出:[[1]]提示:1
1025除数游戏小艾和小鲍轮流玩游戏,小艾首先开始。最初,黑板上有一个数字n。在每个玩家的回合中,该玩家做出的动作包括:选择任意x,使0将黑板上的数字n替换为n-x。此外,如果玩家无法采取行动,他们就会输掉比赛。当且仅当小艾赢得游戏时返回true,假设两个玩家都发挥最佳。例子在大学某个自习的下午,小白坐在教室看到这道题。想想现年景一过,没有什么理由再不学习了。真是若对黄花孤负酒,怕黄花,也笑人岑寂。这时候黑长直女神过来问:小白,你看到1025这道题了吗,怎么感觉看着很简单,但是理解起来很麻烦啊,这道题你有什么思路呢?小白内心镇定:这机会不就来了吗,小美,《一起摇太阳》有机会一起去看看吧?哦,不