登录社区云,与社区用户共同成长
邀请您加入社区
给定两个字符串和 ,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。示例 1:输入:text1 = "abcde", text2 = "a
给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。18. 生成随机数给定一个 0-4 随机数生成器 如何生成 0-6 随机数19. 二叉树的最近公共祖先:中等给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结
本文探讨了粉刷房屋最小成本问题的动态规划解法。给定一排n个房屋,每个房屋可涂红、蓝或绿三种颜色之一,要求相邻房屋颜色不同,且每个颜色对应不同成本。通过定义dp[i][j]表示第i个房屋涂j色的最小成本,建立递推关系式:dp[i][0]=min(dp[i-1][1],dp[i-1][2])+costs[i][0]。算法时间复杂度为O(n),空间复杂度O(n)(可优化为O(1))。核心思想是当前房屋的
题目链接:https://leetcode-cn.com/problems/longest-palindromic-substring/submissions/题目:返回给定串的最长回文子串。为了方便分析,用字 '#’ 表示空字符,那么对于字符串 s = "aabcdefg",可以表示成 _s = "#a#a#b#c#d#e#f#g#"。显然,对于长度为n的字符串s,可能的回文串的中心有n ...
双指针基础可以点进来。
本文介绍了两种经典回溯算法的应用:数独求解和单词搜索。对于数独问题,通过三张状态表(行、列、宫)进行强剪枝,结合回溯法高效求解。单词搜索则采用DFS回溯策略,通过访问标记避免重复使用格子,按顺序匹配单词字符。最后总结了回溯算法的三种模板:位置驱动型(如单词搜索)、选择驱动型(如全排列)和二叉决策型(如子集生成),并分析了各自的特点和应用场景。两种算法的时间复杂度在最坏情况下均为指数级,但通过剪枝和
给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。本题与 15. 三数之和 非常类似,可以使用「双指针」的方法来解决。 1.先把数组从小到大排序2.先确定第一个指针a,a从左往右依次遍历。3.随后确定第二指针b,第三指针c,b从a右边第一个数组往右遍历,c则从
给定一个无重复整数数组,返回所有可能的排列。示例:Input: [1,2,3]Output:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]思路1、字典序法使用字典序法不断寻找当前排序的下一个排序,直至返回到了起始序列。2、深度优先搜索使用递归法,维护一个结果数组、以及每个元素对应的剩余元素...
leetcode 九坤投资专场竞赛
冰山订单算法的代码实现逻辑和源代码
字节跳动实习面试算法题。