Documentation
¶
Index ¶
- func BinaryFindTarget(nums []int, target int) int
- func CoinsChange(coins []int, amount int) int
- func FindDistanceK(root *datastructure.TreeNode, target *datastructure.TreeNode, k int) []int
- func FindKLargestSums(A, B []int, k int) []int
- func FindKSum(a1, a2 []int, k int) []int
- func FindMinCoveringSubStr(s, t string) string
- func FindSubStr(s1, s2 string) bool
- func HasCycle(l *ListNode) bool
- func LongestPalindromeSubStr(str string) string
- func MaxGoodNumber(nums []int) int
- func MaxProfit(prices []int) int
- func MaxProfit2(prices []int) int
- func MaxSumSubArray(nums []int) int
- func MinWindow(s string, t string) string
- func PalindromeString(s string) string
- func PalindromeStringDP(s string) string
- func RemoveDuplicates(nums []int) int
- func SumTarget(nums []int, target int) []int
- type Item
- type ListNode
- type MaxHeap
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BinaryFindTarget ¶
BinaryFindTarget 给定一个长度为n的有序数组 nums ,其中可能包含重复元素。请返回数组中最左一个元素 target 的索引。若数组中不包含该元素,则返回-1.
func CoinsChange ¶
CoinsChange
给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。
计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。
你可以认为每种硬币的数量是无限的。
示例 1:
输入:coins = [1, 2, 5], amount = 11 输出:3 解释:11 = 5 + 5 + 1 示例 2:
输入:coins = [2], amount = 3 输出:-1 示例 3:
输入:coins = [1], amount = 0 输出:0
提示:
1 <= coins.length <= 12 1 <= coins[i] <= 231 - 1 0 <= amount <= 104
func FindDistanceK ¶
func FindDistanceK(root *datastructure.TreeNode, target *datastructure.TreeNode, k int) []int
FindDistanceK godoc the random medium question number is 863 给定一个二叉树(具有根结点 root), 一个目标结点 target ,
和一个整数值 k ,返回到目标结点 target 距离为 k 的所有结点的值的数组。
答案可以以 任何顺序 返回。 输入:root = [3,5,1,6,2,0,8,null,null,7,4], target = 5, k = 2
输出:[7,4,1]
解释:所求结点为与目标结点(值为 5)距离为 2 的结点,值分别为 7,4,以及 1
func FindKLargestSums ¶
func FindMinCoveringSubStr ¶
FindMinCoveringSubStr
给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。
注意:
对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。 如果 s 中存在这样的子串,我们保证它是唯一的答案。
func FindSubStr ¶
FindSubStr
给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true ;否则,返回 false 。
换句话说,s1 的排列之一是 s2 的 子串 。
func LongestPalindromeSubStr ¶
LongestPalindromeSubStr 找出最长的回文串
func MaxGoodNumber ¶
MaxGoodNumber
给你一个长度为 3 的整数数组 nums。
现以某种顺序 连接 数组 nums 中所有元素的 二进制表示 ,请你返回可以由这种方法形成的 最大 数值。
注意 任何数字的二进制表示 不含 前导零。
示例 1:
输入: nums = [1,2,3]
输出: 30
解释:
按照顺序 [3, 1, 2] 连接数字的二进制表示,得到结果 "11110",这是 30 的二进制表示。
示例 2:
输入: nums = [2,8,16]
输出: 1296
解释:
按照顺序 [2, 8, 16] 连接数字的二进制表述,得到结果 "10100010000",这是 1296 的二进制表示。
提示:
nums.length == 3 1 <= nums[i] <= 127
注意:竞赛中,请勿复制题面内容,以免影响您的竞赛成绩真实性。
func MaxProfit ¶
MaxProfit 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
示例 1:
输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
示例 2:
输入:prices = [7,6,4,3,1] 输出:0 解释:在这种情况下, 没有交易完成, 所以最大利润为 0。
提示:
1 <= prices.length <= 105
0 <= prices[i] <= 104
func MaxProfit2 ¶
MaxProfit2 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
示例 1:
输入:prices = [7,1,5,3,6,4] 输出:7 解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。 最大总利润为 4 + 3 = 7 。 示例 2:
输入:prices = [1,2,3,4,5] 输出:4 解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。 最大总利润为 4 。
示例 3:
输入:prices = [7,6,4,3,1] 输出:0 解释:在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0。
提示:
1 <= prices.length <= 3 * 104
0 <= prices[i] <= 104
func MaxSumSubArray ¶
MaxSumSubArray godoc 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 示例 2:
输入:nums = [1] 输出:1 示例 3:
输入:nums = [5,4,-1,7,8] 输出:23
提示:
1 <= nums.length <= 105 -104 <= nums[i] <= 104
进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的 分治法 求解。
解法说明:
𝑑𝑝[𝑖]=𝑀𝑎𝑡ℎ.𝑚𝑎𝑥(𝑑𝑝[𝑖−1],0)+𝑛𝑢𝑚𝑠[𝑖]
如果以i-1为结尾的子序列最大值为负,那么不管怎么样,dp[i]就应该从头开始计数,因为前面的子序列已经不再有影响了,(dp[i - 1] + nums[i]必然小于nums[i])
func PalindromeString ¶
PalindromeString godoc
给你一个字符串 s,找到 s 中最长的 回文 子串。
示例 1:
输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 示例 2:
输入:s = "cbbd" 输出:"bb"
func PalindromeStringDP ¶
PalindromeStringDP godoc 设 dp[i][j] 表示字符串从索引 i 到 j 是否为回文。
若 s[i] == s[j] 且内部子串 s[i+1:j-1] 也是回文,则 dp[i][j] = true
func SumTarget ¶
SumTarget
给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。
如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。
以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。
你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。
你所设计的解决方案必须只使用常量级的额外空间。
Types ¶
type ListNode ¶
func FindKthLastInList ¶
FindKthLastInList 单链表的倒数第 k 个节点
func PartitionList ¶
PartitionList 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。