需要判断同列和斜线。 2.位运算递归。有代码。 3.我的递归。有代码。 只需要判断斜线。...fmt.Println("时间:", time.Now().Sub(now)) fmt.Println("------") now = time.Now() fmt.Println("3.我的递归...record []int, n int) int { if i == n { return 1 } res := 0 for j := 0; j n;...int) int { if n n > 32 { return 0 } limit := -1 if n !...restLen; i++ { isValid := true for j := 0; j < recordLen; j++ { //不需要看同行和同列
给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。...) } func maxProfit(K int, prices []int) int { if len(prices) == 0 { return 0 } N...:= len(prices) if K >= N/2 { return allTrans(prices) } dp := make([][]int, K+1)...for i := 0; i < K+1; i++ { dp[i] = make([]int, N) } ans := 0 for tran := 1; tran...tran++ { pre := dp[tran][0] best := pre - prices[0] for index := 1; index N;
2021-09-24:给定一个正整数 n ,输出的第 n 项。前五项如下:1:1。2:11。3:21。4:1211。5:111221。第一项是数字 1 。...描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 "11"。描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 "21"。...描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 "1211"。...描述前一项,这个数是 1211 即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ,记作 "111221"。返回第N项的字符串。 福大大 答案2021-09-24: 自然智慧。递归。...int) string { if n < 1 { return "" } if n == 1 { return "1" } last
2022-04-21:给定一个包含 [0,n) 中不重复整数的黑名单 blacklist, 写一个函数从 [0, n) 中返回一个不在 blacklist 中的随机整数, 对它进行优化使其尽量少调用系统方法...1 n <= 1000000000, 0 N)。 力扣710. 黑名单中的随机数。...范围是[0,n),黑马单有m个;那么随机数的范围变成[0,n-m)。然后随机范围内的数字,碰到黑名单的数根据map映射。 代码用rust编写。...; } struct Solution { size: i32, convert: HashMap, } impl Solution { fn new(n:...n -= 1; while n > blacklist[i as usize] { if n == blacklist[(m - 1) as usize
给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。...注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 福大大 答案2021-07-06: 一次遍历法。 时间紧,请直接看代码。 时间复杂度:O(N)。空间复杂度:O(1)。..., 1, 9, 3} ret := maxProfit(arr) fmt.Println(ret) } func maxProfit(prices []int) int { N...:= len(prices) if N < 2 { return 0 } ans := 0 doneOnceMinusBuyMax := -prices[...0] doneOnceMax := 0 min := prices[0] for i := 1; i N; i++ { min = getMin(min, prices
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择某一天 买入这只股票,并选择在未来的某一个不同的日子卖出该股票。...设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 福大大 答案2021-07-04: 一次遍历法。...遍历的时候,记录最小值,然后收集所有的【prices[i]-最小值】,其中的最大值就是需要返回的值。 时间复杂度:O(N)。空间复杂度:O(1)。 代码用golang编写。..., 3, 6, 4} ret := maxProfit(arr) fmt.Println(ret) } func maxProfit(prices []int) int { N...:= len(prices) if N <= 1 { return 0 } ans := 0 min := prices[0] for i :=
2025-01-14:K 秒后第 N 个元素的值。用go语言,给定两个整数 n 和 k,我们开始时有一个长度为 n 的整数数组 a,其中每个元素均为 1。...在每秒的更新中,数组的每个元素都会被其前面所有元素的和与自身相加。...我们需要计算经过 k 秒后,a[n - 1] 的值,并将其对 1000000007 取模,然后返回结果。 1 n, k <= 1000。 输入:n = 4, k = 5。 输出:56。...3. pow 函数用来计算 x 的 n 次方的结果,并且对 mod 取模。这个函数会在计算逆元的过程中使用。 4. valueAfterKSeconds 函数用来计算经过 k 秒后第 n 个元素的值。...首先计算出当前数组的值,然后按照规则更新数组 n+k-1 次,最终返回 a[n-1] 的值对 mod 取模的结果。
2022-06-16:给定一个数组arr,含有n个数字,都是非负数, 给定一个正数k, 返回所有子序列中,累加和最小的前k个子序列累加和。 假设K不大,怎么算最快? 来自亚马逊。..., ans); } fn top_min_sum2(arr: &mut Vec, k: i32) -> Vec { arr.sort(); // (最右的下标,集合的累加和...[]; for _ in 0..k { ans.push(0); } // ans[0] = 0 // 0 1 2 k-1 // k个!
2024-08-31:用go语言,给定一个数组apple,包含n个元素,每个元素表示一个包裹中的苹果数量; 另一个数组capacity包含m个元素,表示m个不同箱子的容量。...有n个包裹,每个包裹内装有指定数量的苹果,以及m个箱子,每个箱子的容量不同。 任务是将这n个包裹中的所有苹果重新分配到箱子中,最小化所需的箱子数量。...需要注意的是,可以将同一个包裹中的苹果分装到不同的箱子中。 需要计算并返回实现这一目标所需的最小箱子数量。 输入:apple = [1,3,2], capacity = [4,3,1,5,2]。...解释:使用容量为 4 和 5 的箱子。 总容量大于或等于苹果的总数,所以可以完成重新分装。 答案2024-08-31: chatgpt 题目来自leetcode3074。...• 如果 s 大于 0,继续尝试将苹果放入下一个箱子,更新 s 为剩余苹果的数量。 5.如果循环结束时仍未返回箱子数量,说明无法将所有苹果重新分装到箱子中,返回 -1。
题目:平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小。...using namespace std; 15 16 int dx[4] = {0, 0, -1, 1}; 17 int dy[4] = {-1, 1, 0, 0}; //上下左右四个方向...18 19 struct Point 20 { 21 double x, y; 22 }; 23 24 Point s[N], t[N]; 25 26...Point o) 50 { 51 double ans = 0; 52 while(n--) 53 ans += GetDist(s[n], t[n],...flag) 66 { 67 flag = 0; 68 for(int i = 0; i 个方向
用go语言,给定一个整数 n 和一个二维数组 requirem)ents,其中每个元素 requirements[i] = [endi, cnti] 表示在要求中末尾的下标以及逆序对的数量。...任务是返回所有可能的数组排列 perm = [0, 1, 2, ..., n - 1] 的数量,使得对于所有的 requirements,都满足 perm[0..endi] 中恰好有 cnti 个逆序对...解释: 两个排列为: [2, 0, 1] 前缀 [2, 0, 1] 的逆序对为 (0, 1) 和 (0, 2) 。 前缀 [2] 的逆序对数目为 0 个。...[1, 2, 0] 前缀 [1, 2, 0] 的逆序对为 (0, 2) 和 (1, 2) 。 前缀 [1] 的逆序对数目为 0 个。...2.编写函数 numberOfPermutations(n, requirements) 来计算符合要求的排列数量。 3.初始化一个要求映射 reqMap,记录每个末尾下标及其逆序对数量的要求。
root121toor@gmail.com ~关注我 带你看更多精品技术和面试必备 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大...对结果有增益效果,则 nowSum 保留并加上当前遍历数字 如果 nowSum <= 0,则说明nowSum 对结果无增益效果,需要舍弃,则 nowSum 直接更新为当前遍历数字 比较maxNum和当前和
2024-12-11:数组最后一个元素的最小值。用go语言,给定两个整数 n 和 x,构造一个长度为 n 的正整数数组 nums,使得数组中相邻元素递增且所有元素按位与的结果为 x。...返回可能的最小 nums 数组中的最后一个元素的值。 1 n, x <= 100000000。 输入:n = 3, x = 4。 输出:6。...解释: 数组 nums 可以是 [4,5,6] ,最后一个元素为 6 。 答案2024-12-11: chatgpt[1] 题目来自leetcode3133。...大体步骤如下: 1.计算变量 bitCount,表示 n 和 x 转换为二进制后的位数差。 2.设置初始解 res 为 x,并初始化另一个变量 m 为 n - 1。...5.返回最终的 res 值,即可能的最小 nums 数组。 总体时间复杂度: • 该算法的时间复杂度取决于 bitCount,即 O(bitCount)。
2022-02-16:将数组分割成和相等的子数组。...给定一个有 n 个整数的数组,你需要找到满足以下条件的三元组 (i, j, k) : 0 n - 1 子数组 (0, i - 1),(i + 1,...j - 1),(j + 1, k - 1),(k + 1, n - 1) 的和应该相等。...这里我们定义子数组 (L, R) 表示原数组从索引为L的元素开始至索引为R的元素。 示例: 输入: 1,2,1,2,1,2,1 输出: True 解释: i = 1, j = 3, k = 5....给定数组中的元素会在 -1,000,000, 1,000,000 范围内。 力扣548。 答案2022-02-16: 暴力枚举。 时间复杂度:O(N**3)。 空间复杂度:O(N)。
题目描述: 给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。...给定矩阵中至少有一个元素是 0。 矩阵中的元素只在四个方向上相邻: 上、下、左、右。...一、创建矩阵 示例:创建一个根据行列,创建数组,并填入数字; let col = 3; //列数 let row = 3; //行数 let matrix = []; //创建一个数组存储空间 let...//获取矩阵的行数 let col = matrix[0].length; //获取矩阵的列 var temp = [];//创建一个数组存储空间 for(var i = 0; i...let col = matrix[0].length; //获取矩阵的列 var temp = [];//创建一个数组存储空间 for(var i = 0; i < row; i++){ temp
2021-08-13:给定一个每一行有序、每一列也有序,整体可能无序的二维数组 ,在给定一个正数k,返回二维数组中,最小的第k个数。 福大大 答案2021-08-13: 二分法。...int{{1, 2, 3}, {2, 3, 4}, {3, 4, 5}} ret := kthSmallest2(matrix, 8) fmt.Println(ret) } // 二分的方法...func kthSmallest2(matrix [][]int, k int) int { N := len(matrix) M := len(matrix[0]) left...+ ((right - left) >> 1) // 的数,谁最接近mid info := noMoreNum(matrix...int, n2 int) *Info { ans := &Info{} ans.near = n1 ans.num = n2 return ans } func noMoreNum
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。...简介:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。...该算法的实现思路如下: 使用一个变量ans存储最终的答案,使用一个变量cur存储当前的连续子数组和。 遍历整个数组,对于每一个数字,更新cur为它自身和(cur + nums[i])之间的较大值。...遍历完数组后,返回ans作为最大子数组和。...由于只有一层循环,该算法的时间复杂度为 O(n)。
领取专属 10元无门槛券
手把手带您无忧上云