前言 在写shell的时候发现一个违反直觉的的操作,一般判断一个变量是否为boolean,习惯上使用if param。 但是在写脚本的时候,发现无论如何,不会走false。...aaa=false if [[ $aaa ]];then echo "is true" else echo "is false" fi 结是为is true,是不是违反直觉。...shell 是怎么执行这一段脚本的: sh -x test.sh 结果: + aaa=false + [[ -n false ]] + echo 'is true' is true 可以看到,如果是一个变量...aaa是有值的,而且在shell里,false 并不代表false。真正代表true和false的是0和1,没想到吧。...aaa=false if [ $aaa = true ];then echo "is true" else echo "is false" fi 在中括号[ ]中使用==是bash里的做法, 不符合
在前端使用if的时候,里面条件不确定是true还是false,那么可以用以下 方式来提前预知一下, 就比如说一个function fun (){} 你知道这个是true 还是false吗?...fun ,返回是true 那么条件就是true, 小技巧了解一下就好了
2022-12-16:给你一个长度为n的数组,并询问q次 每次询问区间l,r之间是否存在小于等于k个数的和大于等于x 每条查询返回true或者false。...this.k; i++ { this.query[rt][i] = this.max[rt][i] } } else { mid := (l + r) >> 1 leftUpdate := false...rightUpdate := false if L <= mid { leftUpdate = true this.collect(L, R, l, mid, rt<<1) }...if R > mid { rightUpdate = true this.collect(L, R, mid+1, r, rt<<1|1) } var left []int =...rightUpdate { right = this.query[rt<<1|1] } this.merge(this.query[rt], left, right) } } // // 暴力实现的结构
2021-11-06:3的幂。给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。...整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3**x。力扣326。 答案2021-11-06: 如果一个数字是3的某次幂,那么这个数一定只含有3这个质数因子。...4052555153018976267是int型范围内,最大的3的幂,它是3的38次方。...{ ret := isPowerOfThree(81) fmt.Println(ret) } func isPowerOfThree(n int) bool { //3的38
2022-04-26:给定四个整数 sx , sy ,tx 和 ty,如果通过一系列的转换可以从起点 (sx, sy) 到达终点 (tx, ty),则返回 true,否则返回 false。...输入: sx = 1, sy = 1, tx = 3, ty = 5 输出: true 解释: 可以通过以下一系列转换从起点转换到终点: (1, 1) -> (1, 2) (1, 2) -> (3, 2
2024-08-03:用go语言,给定一个从 0 开始的字符串数组 words, 我们定义一个名为 isPrefixAndSuffix 的布尔函数,该函数接受两个字符串参数 str1 和 str2。...当 str1 同时是 str2 的前缀和后缀时,函数返回 true;否则返回 false。...我们的目标是以整数形式返回符合条件的下标对 (i, j) 的数量, 其中满足 i true。...• 检查 str1 的长度是否大于 str2 的长度。如果是,直接返回 false。 • 确定 str2 的前缀是否与 str1 相同。 • 确定 str2 的后缀是否与 str1 相同。...• 如果上述两个条件都满足,返回 true;否则返回 false。 2.
用go语言,给定一个非负整数数组 nums 和一个整数 k,我们的目标是找出数组中最短的非空子数组,使得该子数组所有元素的按位或结果至少为 k。如果找不到这样的子数组,则返回 -1。...解释: 子数组 [2,1,8] 的按位 OR 值为 11 ,所以我们返回 3 。 答案2024-11-09: chatgpt 题目来自leetcode3097。...大体步骤如下: 1.初始化变量: • 使用 ans 来保存当前找到的最短子数组的长度。初始值设为 math.MaxInt,表示一个很大的数。...• 定义一个结构体 pair,用于保存当前子数组的 OR 值和左端点。 • 创建一个空的切片 ors 来存储每个右端点的状态。...• 内部的 for 循环遍历 ors 中的每一个元素,更新其 OR 值: • 计算 p.or |= x,将当前元素 x 赋值给对应的 pair 中的 or。
2024-11-20:交替子数组计数。用go语言,给定一个二进制数组 nums, 如果一个子数组中的相邻元素的值都不相同,我们称这个子数组为交替子数组。 请返回数组 nums 中交替子数组的总数。...大体步骤如下: 1.输入数据:首先,我们有一个二进制数组 nums,例如 nums = [0, 1, 1, 1]。我们的目标是计算这个数组中所有交替子数组的数量。...3.2.cur:用于记录当前交替子数组的长度,初始值为 0。 3.3.pre:一个辅助变量,用于保存前一个元素的值,初始设置为 -1(方便与第一个元素进行比较)。...4.遍历数组: 4.1.对于给定的数组 nums 中的每一个元素 a,执行以下操作: 4.1.1.非重复情况:如果当前元素 a 与前一个元素 pre 不相等,表示交替状态继续,故将当前计数 cur 加...5.结束遍历:当遍历完整个数组后,res 将包含所有可能的交替子数组的总数。 6.返回结果:最后,函数返回 res,这就是我们需要的交替子数组的数量。
2022-04-23:给定你一个整数数组 nums 我们要将 nums 数组中的每个元素移动到 A 集合 或者 B 集合中 使得 A 集合和 B 集合不为空,并且 average(A) == average...(B) 如果可以完成则返回true,否则返回false。...注意:对于数组 arr, average(arr) 是 arr 的所有元素的和除以 arr 长度。 输入: nums = [1,2,3,4,5,6,7,8]。 输出: true。...调用函数 collect(larr, true) 收集左侧集合的指标值,并调用函数 collect(rarr, false) 收集右侧集合的指标值。 7....对右侧集合的指标值进行排序,以便进行二分查找。 8. 遍历左侧集合的指标值,在右侧集合中查找是否存在相反数,如果存在则说明可以分割成两个具有相同平均数的子集,返回 true;否则返回 false。
2023-05-05:给定一个无向、连通的树树中有 n 个标记为 0...n-1 的节点以及 n-1 条边 。...给定整数 n 和数组 edges ,edgesi = ai, bi表示树中的节点 ai 和 bi 之间有一条边。...答案2023-05-05:思路:给定一棵无向、连通的树,要求计算每个节点到其他所有节点的距离之和。可以通过遍历树,对于每个节点分别计算它到其他节点的距离之和。...对于每个节点,利用它的子节点信息来更新它到其他节点的距离之和,然后递归地更新它的子节点。最终得到所有节点的距离之和。具体实现如下:1.构造图通过给定的 edges 数组构造无向图。...3.递归更新节点到其他节点的距离之和从根节点开始递归遍历树,对于每个节点,首先计算它到其他节点的距离之和,并将其保存在 ans 数组中。
原生的 Elasticsearch 检索机制没有这个功能。那就意味着,咱们得自己实现。 如何实现呢?把用户给定的序列(非递增也非递减的无规律序列,如3、1、5、7),看成一维数组数据。...他们的数组的下标只能是0、1、2、3.....也就是说,下标是有序的。 那么接下来问题就转嫁为如何基于数组下标进行升序排序的问题? 借助 sort 排序的 script 脚步排序即可实现。...这个特定请求的含义是,我们要更新集群的临时(transient)设置。...在这种情况下,由于我们的 ID 列表只包含 4 个 ID,因此查询将返回最多 4 个文档。 query: 使用 ids 查询来筛选给定 ID 列表中的文档。...params: 脚本的参数,包含一个名为 ids 的列表,其中包含了要排序的 ID。这里,我们将 ID 列表作为参数传递给脚本。 order: 设置为 "asc",表示按升序对文档进行排序。
2024-09-04:用go语言,给定一个长度为n的数组 happiness,表示每个孩子的幸福值,以及一个正整数k,我们需要从这n个孩子中选出k个孩子。...在筛选过程中,每轮选择一个孩子时,所有尚未选中的孩子的幸福值都会减少 1。需要注意的是,幸福值不能降低到负数,只有在其为正数时才能减少。 我们的目标是尽可能使选中的k个孩子的幸福值之和最大化。...大体步骤如下: 1.对孩子的幸福值数组 happiness 进行降序排序。 2.从排序后的数组中选择前 k 个幸福值最高的孩子。这些孩子的幸福值之和即为所求。...3.在选出的 k 个孩子中,逐个孩子判断幸福值是否大于等于当前所在位置的索引值,如果是,将幸福值与当前索引值相减,并累加到最终的结果中,表示该孩子的贡献幸福值。...4.最终返回累加的结果作为最大化幸福值之和的输出。 时间复杂度分析: • 排序的时间复杂度为 O(n*log(n)),n 为孩子的数量。
用go语言,给定一个非负整数数组 nums 和一个整数 k,我们需要判断数组中是否存在一个最短的非空子数组,使得该子数组所有元素的按位或(OR)运算结果至少为 k。...如果找到了这样的子数组,返回其长度;如果不存在,则返回 -1。 输入:nums = [1,2,3], k = 2。 输出:1。 解释: 子数组 [3] 的按位 OR 值为 3 ,所以我们返回 1 。...注意,[2] 也是一个特别子数组。 答案2024-10-30: chatgpt 题目来自leetcode3095。...2.解决方案 1: • 对于每一个索引 i 从 0 到 n-1,表示当前子数组的结束位置。 • 对于每一个 j 从 i 递减到 0,表示当前子数组的起始位置。...• 遍历子数组,计算位或结果 res |= nums[idx]。 • 最后返回一个布尔值,判断 res 是否大于等于 k。
2024-12-23:找出分数最低的排列。用go语言,给定一个数组 nums,它包含从 0 到 n-1 的一个排列。...我们定义一个排列 perm 的分数为: score(perm) = |perm[0] - nums[perm[1]]| + |perm[1] - nums[perm[2]]| + ... + |perm...2.使用动态规划来解决这个问题,首先初始化一个数组 f,并使用一个数组 g 来记录每一步得到的结果对应的下一步的选择。 3.从后往前遍历,更新分数,然后回溯找出结果。...总的时间复杂度: • 这种动态规划的运行时间为 O(2^n * n^2),其中 n 表示数组的长度,由于使用了一个二维数组 f 来保存中间结果,所以时间复杂度是指数级别的。...总的额外空间复杂度: • 需要额外的二维数组 f 和 g 来保存中间结果,因此额外空间复杂度为 O(2^n * n),其中 n 表示数组的长度。
队列被定义为两端开放的线性数据结构,并且操作按照先进先出(FIFO)顺序执行。 我们将队列定义为一个列表,其中对列表的所有添加都在一端进行,而对列表的所有删除都在另一端进行。...队列中的 Fifo 属性 队列的特点: 队列可以处理多个数据。 我们可以访问两端。 它们快速且灵活。 队列表示: 与堆栈一样,队列也可以用数组表示:在这种表示中,队列是使用数组来实现的。...本例中使用的变量是 队列:存储队列元素的数组名称。 Front:表示队列的数组中存储第一个元素的索引。 后部:代表队列的数组中存储最后一个元素的索引。...优先级队列:优先级队列是一种特殊的队列,其中的元素根据分配给它们的优先级进行访问。 使用 BFS 检测无向图中的循环 给定一个无向图,如何检查图中是否存在环?例如,下图的循环为1-0-2-1。 ...= v: return True return False def isCyclicDisconnected(adj: list, V): # 标记所有顶点为未访问顶点 visited
2024-07-17:用go语言,给定一个整数数组nums, 我们可以重复执行以下操作: 选择数组中的前两个元素并删除它们, 每次操作得到的分数是被删除元素的和。...解释:我们执行以下操作: 1.删除前两个元素,分数为 3 + 2 = 5 ,nums = [1,4,5] 。 2.删除前两个元素,分数为 1 + 4 = 5 ,nums = [5] 。...由于只剩下 1 个元素,我们无法继续进行任何操作。 答案2024-07-17: chatgpt 题目来自leetcode3038。...总的时间复杂度是 O(n),其中 n 是 nums 数组的长度。因为我们只需要遍历一次整个数组,执行的操作是固定的,不会随着数组变大而增加时间复杂度。...总的额外空间复杂度是 O(1),因为除了用于存储输入参数 nums 外,我们只使用了固定数量的变量(如 n、t、i)来计算最大操作次数,不随着输入的变化而增加额外的空间。
2025-02-08:找出有效子序列的最大长度Ⅰ。用go语言,给定一个整数数组 nums,我们需要找出其最长的“有效子序列”的长度。...也就是说,所有相邻元素之和的奇偶性都应该相同。 简而言之,我们要找出从数组中提取的符合这些条件的最长的子序列,并返回这个子序列的长度。 2 一个长度为 k 的整型数组。 3.循环 m 从 0 到 k: 3.1.调用 clear(f) 函数,清空数组 f。...5.在 main 函数中,给定数组 nums := []int{1, 2, 3, 4},调用 maximumLength(nums) 函数并打印结果。...总的额外空间复杂度: • 需要一个长度为 k 的整型数组 f 存储中间结果,因此额外空间复杂度为 O(k)。
2022-04-23:给定你一个整数数组 nums我们要将 nums 数组中的每个元素移动到 A 集合 或者 B 集合中使得 A 集合和 B 集合不为空,并且 average(A) == average...(B)如果可以完成则返回true,否则返回false。...编写函数 splitArraySameAverage(nums []int) bool,其中 nums 是输入的整数数组。首先检查数组长度是否为 1,如果是则返回 false。计算数组元素之和 s。...调用函数 collect(larr, true) 收集左侧集合的指标值,并调用函数 collect(rarr, false) 收集右侧集合的指标值。对右侧集合的指标值进行排序,以便进行二分查找。...遍历左侧集合的指标值,在右侧集合中查找是否存在相反数,如果存在则说明可以分割成两个具有相同平均数的子集,返回 true;否则返回 false。
用go语言,给定一个整数数组 nums 和一个正整数 k,我们定义一个子序列 sub 的长度为 x,如果满足以下条件,则称为有效子序列: (sub[0] + sub[1]) % k == (sub[1]...+ sub[2]) % k == ... == (sub[x - 2] + sub[x - 1]) % k 我们的目标是返回数组 nums 中最长有效子序列的长度。...大体步骤如下: 1.声明一个长度为 k 的数组 f,用来记录当前余数 m 对应的子序列长度。初始时全部设为 0。...2.循环遍历 m 从 0 到 k-1: 2.1.在每次循环开始时要清空数组 f 的值,这里的 clear(f) 操作可能是将数组 f 的值全部置为 0。...2.2.3.更新 f[x] 的值为 f[(m - x + k) % k] + 1,即前一个余数为 (m - x + k) % k 对应的子序列长度加 1。
关键技术:多维数组中对行的选择,使用[ ]运算符只对行号选择即可,具体程序代码如下所示: 花式索引与布尔值索引 ①布尔索引 我们可以通过一个布尔数组来索引目标数组,以此找出与布尔数组中值为True...关键技术:假设我们有一个长度为7的字符串数组,然后对这个字符串数组进行逻辑运算,进而把元素的结果(布尔数组)作为索引的条件传递给目标数组。具体程序代码如下所示: 【例】二维数组的布尔索引。...如果为True,则不要使用连接轴上的索引值。生成的轴将标记为0…, n-1。 join_axes-这是索引对象的列表。用于其他(n-1)轴的特定索引,而不是执行内部/外部设置逻辑。...:升序或者降序,布尔值,指定多个排序就可以使用布尔值列表,默认是True inplace:布尔值,默认是False,如果值为True,则就地排序 kind:指定排序算法,值为quicksort(快速排序...last ignore_index:布尔值,是否忽略索引,值为True标记索引(从0开始按顺序的整数值),值为False则忽略索引。
领取专属 10元无门槛券
手把手带您无忧上云