2021-09-16:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
2021-08-10:给定一个正数数组arr,返回arr的子集不能累加出的最小正数。1)正常怎么做? 2)如果arr中肯定有1这个值,怎么做?...2.b>range+1,直接返回range+1。 时间复杂度:排序的。 空间复杂度:排序的。 代码用golang编写。
2021-08-09:给定一个有正、有负、有0的数组arr,给定一个整数k,返回arr的子集是否能累加出k。1)正常怎么做?2)如果arr中的数值很大,但是arr的长度不大,怎么做?...,可能为负,可能为0 // 自由选择arr中的数字,能不能累加得到sum // 分治的方法 // 如果arr中的数值特别大,动态规划方法依然会很慢 // 此时如果arr的数字个数不算多(40以内),哪怕其中的数值很大...,分治的方法也将是最优解 func isSum4(arr []int, sum int) bool { if sum == 0 { return true } if...,包含左部分一个数也没有,这种情况的,leftsum表里,0 // 17 17 for l, _ := range leftSum { if _, ok := rightSum...形成的累加和是pre // arr[i...end - 1] end(终止) 所有数字随意选择, // arr[0...end-1]所有可能的累加和存到ans里去 func process4(arr
其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。...nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。...再说另一个角度,从所给目标值的角度考虑,我们来说一句废话:要从一个数组中找两个数字满足其相加之和等于所给目标值,是不是等价于所给目标值是否可以被拆分成两个数组元素,那思路不就来了,先说第一个思路—-组合拆分...组合拆分 还记得上一篇推文(就是罗马数字与整数的相互转换那篇),我们提到了组合拆分的方法,即对于一个从大到小排序的数组,用目标值与数组元素逐一开始比较,当且仅当目标值大于或等于某一项数组元素时,此时用目标值减去当前数组元素...举个栗子: 给定数组[11,8,6,2,1] 给定目标值target=12 则:判断12与所有数组元素的大小关系,因为12>11且12-11=1,用余数继续与后面的元素进行比较,直至余数大于或等于数组元素时
和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。...://leetcode-cn.com/problems/two-sum/ 解决思路: 用第1个数字依次与其后面的数字相加,判断结果是否为目标值; 然后用第2个数字依次与其后面数字相加,判断结果是否为目标值..., nums, target): """ 思路:用第1个数字依次与其后面的数字相加,判断结果是否为目标值;然后用第2个数字依次与其后面数字相加,判断结果是否为目标值...return i, j # 如果相加得到目标值,则返回下角标组合的列表 else: continue # 如果不是,则继续循环...:把输入字符串转换成列表,反向取出来,也就是从最后一个开始提取,然后依次追加到一个新的列表并组合成一个新的字符串,然后与原字符串判断是否相等 :type x: int :
2022-05-05:给定一个正数num,要返回一个大于num的数,并且每一位和相邻位的数字不能相等. 返回达标的数字中,最小的那个。 来自微软。...答案2022-05-05: 从左往右看,是否有相邻两位相同的数字。如果有,则低位加1,低位右边全变成0,递归。 代码用rust编写。
搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。...如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。...return (i) ##返回值所对应的索引值 else: nums.append(target) ##如果数组中的值不等于目标值,则将目标值加入到列表中...nums.sort() ## 对列表进行重新排序 break return (nums.index(target)) ##获取到目标值所在的索引值 4、最大子序和 给定一个整数数组 nums...其实是一边遍历一边计算最大序和 print(max(nums)) 5、最后一个单词的长度 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。
大家好,又见面了,我是你们的朋友全栈君。 题目描述: 写一个函数,此函数要实现以下功能: 给一个列表,并且给一个目标数字,如果列表里的两个数字之和等于目标数字,返回那两个数字的索引值。...比如,给定列表[3,5,7,14],目标数字是10,那么返回[0,2],0是3的索引,2是7的索引,3+7=10. 注意,不可以重复利用列表中的某个数字,比如返回[1,1]是不能接受的。...一、两层for循环遍历列表 思路:先拿出列表里的第0个数字,依次尝试和第1个、第2个……第n个相加,看能否等于目标数字,如果有某个组合等于目标数字,就返回这个组合的两个索引值,如果都不行,再拿出第1个数字...我们从列表中取出一个数字,然后看字典里是否存在能跟这个数字相加得到目标数字的数字。...#nums参数需要一个列表,target参数就是我们想实现的和的值 def twoIndices(nums,target): '''这是寻找和为目标值的两个数的索引的函数''' #定义一个用于存放数字和索引的字典
前言 给定一个已排序的非重复整数数组和一个目标值,如果找到目标,则返回索引。如果不是,返回索引按顺序插入时的位置。 题目 给定一个已排序的非重复整数数组和一个目标值,如果找到目标,则返回索引。...如果不是,返回索引按顺序插入时的位置。...(res1) res2 = Solution().searchInsert([1, 3, 5, 6], 7) print(res2) 以目标值为7示例 第一轮比较,mid 中间位置是数字...3 target目标值7 大于中间数字3,所以第二轮比较 target目标值7 大于中间数字5,所以第三轮比较 由于第三轮比较target目标值7 大于中间数字6,此时low=mid=high...了,依然满足while low <= high,所以还会有下一轮比较 此时low = mid + 1 循环结束,最终返回左边的下标 low 参考博客https://blog.csdn.net/weixin
题目: 给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数, 并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。...但是,你不能重复利用这个数组中同样的元素。 解析: 实际这里就是给你的一个列表的数字,给你一个预期,让你返回这个列表里面两个数字相加等于这个预期的数字的下标。...代码思路: 1.直接用到两个for循环,去遍历这个list, 2.一个for循环从第一个元素,一个for循环从减去这个元素的list里面去遍历 3.然后去判断这个两个的元素相加的和是否等于预期的...taget,如果等于,直接返回元素的下标。...() print(solution.twoSun([1,2,3,4,5,6],5))执行打印结果:那么我来看下给定的list里面是否是对的。
2022-06-16:给定一个数组arr,含有n个数字,都是非负数, 给定一个正数k, 返回所有子序列中,累加和最小的前k个子序列累加和。 假设K不大,怎么算最快? 来自亚马逊。..., ans); } fn top_min_sum2(arr: &mut Vec, k: i32) -> Vec { arr.sort(); // (最右的下标,集合的累加和
2021-08-10:给定一个正数数组arr,返回arr的子集不能累加出的最小正数。1)正常怎么做?2)如果arr中肯定有1这个值,怎么做?...2.b>range+1,直接返回range+1。 时间复杂度:排序的。 空间复杂度:排序的。 代码用golang编写。
Sum 不同的是给定的列表是排好序的。...如果按照 Q1 Two Sum 的思路,时间复杂度和空间复杂度均为 O(n)。 既然是排序好的列表,那么就应该利用这样一个优势。 方法一:时间复杂度为 O(nlgn),空间复杂度为 O(1) 。...具体做法就是依次遍历列表中的元素,得到目标值与元素的差值,然后在剩余的元素中采用二分查找。 方法二:时间复杂度为 O(n),空间复杂度为 O(1) 。利用两个指针,一个指向列表头,一个指向列表尾。...将头尾两元素值相加与目标值相比,如果比目标值小,则头指针向前移动;否则,尾指针向后移动。不断缩小范围,直到找到相加值与目标值相等的两个元素,否则返回None。 程序实现最终采用了方法二。...注意点: 返回的索引不是从0开始的,而是从1开始的。
2021-05-21:给定一个数组arr,先递减然后递增,返回arr中有多少个绝对值不同的数字? 福大大 答案2021-05-21: 双指针。左指针最左,符合条件时右移;右指针最右,符合条件时左移。
并且使用列表来模拟栈,在使用一个列表来保存需要返回的结果。...题意分析: 给定一个行数,生成帕斯卡三角形该行的数。 思路分析 这一题其实只是上一题的一部分,生成第n行的列表即可。 首先,每一行的第一个数都是1,我们就可以创建一个第一个元素为1的列表。...例子: Input: numbers={2, 7, 11, 15}, target=9 Output: index1=1, index2=2 题意分析: 求有序的输入的列表中是否有两个数相加的和等于目标值...,返回其索引下标(从1开始),并且要求第一个索引小与第二个。...,返回其索引下标(从1开始),并且要求第一个索引小与第二个。
2021-07-30:两个有序数组间相加和的Topk问题。给定两个有序数组arr1和arr2,再给定一个整数k,返回来自arr1和arr2的两个数相加和最大的前k个,两个数必须分别来自两个数组。...2.我的方法。小根堆。两个有序数组构成一个二维数组。然后从右下往左上遍历,当遍历数量大于等于k时,停止遍历。见图。 时间复杂度:略大于O(k)。 空间复杂度:O(k)。 ? 代码用golang编写。...9, 11} topK := 4 if true { ret := topKSum1(arr1, arr2, topK) fmt.Println("左神的方法...) } } type Node struct { index1 int // arr1中的位置 index2 int // arr2中的位置 sum int //...arr1[index1] + arr2[index2]的值 } func NewNode(i1 int, i2 int, s int) *Node { ret := &Node{}
本题可以用哈希、双指针、二分查找三个思路进行求解,同时应建立有序列表与二分法的思维反射。...1 题目描述 给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数,并满足两个要求:1、按照先后顺序输出两个数的下标值,下标值从1开始;2、假设每个输入只对应唯一的答案,不可以重复使用相同的元素...如输入数组为[2,6,7,9],目标值为8,则返回[1,2],[2,1]不为正确答案。...计算指针指向数字的和,如果大于target,大数字指针减1,如果小于target,小数字指针加1,如果正好相等则输出。...对于一个顺序存储且里面元素是有序排列的结构,判断中间位置的值是否与目标值一致,如不一致则根据大小关系在中间值切割的前后两个子表中,重复前述操作进行查找。
问题 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。...但是,你不能重复利用这个数组中同样的元素 示例 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0...,这种算法时 间复杂度O(n2),对每个元素,我们都遍历数组中该元素之后剩余的元素是否有与之相加得到的和和目标值匹配,空间复杂度为O(1),在整个过程中没有申请额外的空间 func twoSum(nums...万变不离其中,空间换时间 假定数组 nums = [2, 7, 11, 15], target = 9,假定我们已知数字2,目标值9 ,我们想知道数组中是否有7呢?...=v 是防止 3+3,4+4 这种情况,比如下标为0的是3,target是6 那么会返回0,0;同一个下标了 if v,ok :=m[temp]; i!
领取专属 10元无门槛券
手把手带您无忧上云