草庐IT

LeetCode - 寻找两个正序数组的中位数

题目信息源地址:寻找两个正序数组的中位数给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为\(O(log(m+n))\)。提示信息示例1输入:nums1=[1,3],nums2=[2]输出:2.00000解释:合并数组=[1,2,3],中位数2示例2输入:nums1=[1,2],nums2=[3,4]输出:2.50000解释:合并数组=[1,2,3,4],中位数(2+3)/2=2.5提示nums1.length==mnums2.length==n001-10^6实现逻辑归并法最先想到的解题方法就是,将两个有序数组合

LeetCode算法训练-回溯 491.递增子序列 46.全排列 47.全排列 II

欢迎关注个人公众号:爱喝可可牛奶LeetCode算法训练-回溯491.递增子序列46.全排列47.全排列IILeetCode491.递增子序列分析找出并返回所有数组中不同的递增子序列绝对不能先升序绝对不能先升序绝对不能先升序这样会改变原有数组的结构子序列中元素在数组中不一定相邻只要叶子节点,也就是path,一满足条件,直接加入res注意去重used[]数组只针对当前节点的后序节点要在回溯函数中定义画回溯树一看便知代码classSolution{privateLinkedListpath=newLinkedList();privateList>res=newArrayList();publicL

01背包面试题系列(一)

01背包面试题系列(一)题目描述——分割等和子集给你一个只包含正整数的非空数组nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例1:输入:nums=[1,5,11,5]输出:true解释:数组可以分割成[1,5,5]和[11]。示例2:输入:nums=[1,2,3,5]输出:false解释:数组不能分割成两个元素和相等的子集。01背包动态规划求解上面的问题乍一看好像是一个子集划分的问题,我们可能根据数据nums得到它的所有的子集,然后将所有的自己加起来看看是否存在一个子集的数据的和等于nums数组所有数据的和的一半,其实我们确实可以这样做,我们将在后文当中仔细探

LeetCode算法训练 93.复原IP地址 78.子集 90.子集II

欢迎关注个人公众号:爱喝可可牛奶LeetCode算法训练93.复原IP地址78.子集90.子集IILeetCode93.复原IP地址分析字符串全部由数字组成,ipv4每一段数字不能有前导0,且大小∈[0,255]等价于将字符串进行分割,并判断分割后的数是否满足条件插入一个点进行切割、判断是否满足条件、再插入、再判断,直到插入3个点,判断剩下的一段是否满足条件代码classSolution{Listres=newArrayList();publicListrestoreIpAddresses(Strings){if(s.length()>12)returnres;//算是剪枝了backTrack

01背包面试题系列(一)

01背包面试题系列(一)题目描述——分割等和子集给你一个只包含正整数的非空数组nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例1:输入:nums=[1,5,11,5]输出:true解释:数组可以分割成[1,5,5]和[11]。示例2:输入:nums=[1,2,3,5]输出:false解释:数组不能分割成两个元素和相等的子集。01背包动态规划求解上面的问题乍一看好像是一个子集划分的问题,我们可能根据数据nums得到它的所有的子集,然后将所有的自己加起来看看是否存在一个子集的数据的和等于nums数组所有数据的和的一半,其实我们确实可以这样做,我们将在后文当中仔细探

LeetCode算法训练 93.复原IP地址 78.子集 90.子集II

欢迎关注个人公众号:爱喝可可牛奶LeetCode算法训练93.复原IP地址78.子集90.子集IILeetCode93.复原IP地址分析字符串全部由数字组成,ipv4每一段数字不能有前导0,且大小∈[0,255]等价于将字符串进行分割,并判断分割后的数是否满足条件插入一个点进行切割、判断是否满足条件、再插入、再判断,直到插入3个点,判断剩下的一段是否满足条件代码classSolution{Listres=newArrayList();publicListrestoreIpAddresses(Strings){if(s.length()>12)returnres;//算是剪枝了backTrack

LeetCode - 两数之和

题目信息源地址:两数之和给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。提示信息示例1输入:nums=[2,7,11,15],target=9输出:[0,1]解释:因为nums[0]+nums[1]==9,返回[0,1]。示例2输入:nums=[3,2,4],target=6输出:[1,2]示例3输入:nums=[3,3],target=6输出:[0,1]限制2-10^9-10^9只会存在一个有效答案实现逻辑

leetcode 312. Burst Balloons 戳气球(困难)

一、题目大意标签:分治https://leetcode.cn/problems/burst-balloons有n个气球,编号为0到n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。戳破第i个气球,你可以获得 nums[i-1]*nums[i]*nums[i+1]枚硬币。 这里的i-1和i+1代表和 i 相邻的两个气球的序号。如果i-1或i+1超出了数组的边界,那么就当它是一个数字为1的气球。求所能获得硬币的最大数量。示例1:输入:nums=[3,1,5,8]输出:167解释:nums=[3,1,5,8]-->[3,5,8]-->[3,8]-->[8]-

LeetCode - 两数之和

题目信息源地址:两数之和给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。提示信息示例1输入:nums=[2,7,11,15],target=9输出:[0,1]解释:因为nums[0]+nums[1]==9,返回[0,1]。示例2输入:nums=[3,2,4],target=6输出:[1,2]示例3输入:nums=[3,3],target=6输出:[0,1]限制2-10^9-10^9只会存在一个有效答案实现逻辑

leetcode 312. Burst Balloons 戳气球(困难)

一、题目大意标签:分治https://leetcode.cn/problems/burst-balloons有n个气球,编号为0到n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。戳破第i个气球,你可以获得 nums[i-1]*nums[i]*nums[i+1]枚硬币。 这里的i-1和i+1代表和 i 相邻的两个气球的序号。如果i-1或i+1超出了数组的边界,那么就当它是一个数字为1的气球。求所能获得硬币的最大数量。示例1:输入:nums=[3,1,5,8]输出:167解释:nums=[3,1,5,8]-->[3,5,8]-->[3,8]-->[8]-