一、判断字符串是否为整数的多种思路 1)使用sed加正则表达式 删除字符串中的所有数值,看字符串长度是否为0来判断 [ -n "`echo oldboy123|sed 's#[0-9]##g'`" ]...,如果参与计算的是非整数,就会报错,查看返回值就能确定 expr oldboy + 0 &>/dev/null;echo $?...=~ ^[0-9]+$ ]] && echo int || echo char int 二、判断字符串是否为0的多种思路 1) 使用字符串表达式-z和-n [ -z "oldboy" ] && echo...length函数统计 [ `echo oldboy|awk '{print length}'` -eq 0 ] && echo "zero" || echo "no zero" 三、扩展:判断传入的参数个数是否满足要求...假如要求传入两个参数,则可以直接判断第二个参数是否为空,如果为空,则表示第二个参数不存在 [ -z $2 ] && echo "zero" || echo "no zero"
文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 num ,请你返回三个连续的整数,它们的 和 为 num 。 如果 num 无法被表示成三个连续整数的和,请你返回一个 空 数组。...示例 1: 输入:num = 33 输出:[10,11,12] 解释:33 可以表示为 10 + 11 + 12 = 33 。...10, 11, 12 是 3 个连续整数,所以返回 [10, 11, 12] 。 示例 2: 输入:num = 4 输出:[] 解释:没有办法将 4 表示成 3 个连续整数的和。...sumOfThree(long long num) { if(num%3) return {}; long long a = num/3; return {a-1,...a, a+1}; } }; 0 ms 6 MB C++ ---- 我的CSDN博客地址 https://michael.blog.csdn.net/
如果给你一个题目,“给定一个整数数组和一个目标数S,如何输出该数组中所有和为S的可能组合?”,你会如何做呢?...例如,给定数组 如下: int[] values = { 1, 3, 4, 5, 6, 15 }; 那么和为15的可能组合有如下几种: 15 = 1+3+5+6 15 = 4+5+6 15 = 15...针对该问题,解决的方法有很多种。...接下来的方法,我们将Stack替换掉。...stack, stacklen + 1, target - data[fromIndex]); fromIndex++; } } /** * 打印符合条件的结果
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 [在这里插入图片描述] 福大大 答案2021-07-14: 左右指针向中间移动。...空间复杂度:O(1)。 代码用golang编写。...代码如下: package main import "fmt" func main() { height := []int{2, 0, 1, 2} ret := trap(height...len(height) if N <= 2 { return 0 } leftMax := height[0] rightVal := height[N-1]...L := 1 R := N - 2 ans := 0 for L <= R { if leftMax < rightVal {
2022-02-21:不含连续1的非负整数。 给定一个正整数 n ,返回范围在 0, n 都非负整数中,其二进制表示不包含 连续的 1 的个数。...输入: n = 5 输出: 5 解释: 下面是带有相应二进制表示的非负整数<= 5: 0 : 0 1 : 1 2 : 10 3 : 11 4 : 100 5 : 101 其中,只有整数3违反规则(有两个连续的...1),其他5个满足规则。...1 <= n <= 10的9次方。 力扣600。 答案2022-02-21: 动态规划。 根据规律,跟斐波那契数列有关,但未找到这种解法。 代码用golang编写。...= 0 { break } } // for循环出来之后,i表示,n最高位的1,在哪? // 从这个位置,往右边低位上走!
2021-08-11:按要求补齐数组。给定一个已排序的正整数数组 nums,和一个正整数 n 。...从 1, n 区间内选取任意个数字补充到 nums 中,使得 1, n 区间内的任何数字都可以用 nums 中某几个数字的和来表示。请输出满足上述要求的最少需要补充的数字个数。...[在这里插入图片描述] 福大大 答案2021-08-11: 用尽可能大的数字扩充range范围。尽可能大的数字是range+1。 时间复杂度:O(数组长度+log(n))。 空间复杂度:O(1)。...= len(arr); i++ { // arr[i] // 要求:1 ~ arr[i]-1 范围被搞定!...for arr[i]-1 > range2 { // arr[i] 1 ~ arr[i]-1 range2 += range2 + 1 // range + 1 是缺的数字
2022-04-23:给定一个长度为4的整数数组 cards 。你有 4 张卡片,每张卡片上都包含一个范围在 1,9 的数字。...你须遵守以下规则: 除法运算符 '/' 表示实数除法,而不是整数除法。 例如, 4 /(1 - 2 / 3)= 4 /(1 / 3)= 12 。 每个运算都在两个数字之间。...例如,如果 cards =1,1,1,1 ,则表达式 “-1 -1 -1 -1” 是 不允许 的。...你不能把数字串在一起 例如,如果 cards =1,2,1,2 ,则表达式 “12 + 12” 无效。 如果可以得到这样的表达式,其计算结果为 24 ,则返回 true ,否则返回 false 。...} return judge(arr, len(cards)) } // arr中,有效的范围arr[0...size-1] ...
PTA:本题要求两个给定正整数的最大公约数和最小公倍数。 输入格式:输入在一行中给出两个正整数M和N(≤1000)。...输出格式:在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。...输入样例: 511 292 输出样例::73 2044 #include int main() { int num1, num2; scanf("%d %d", &num1...+){ s1=num1*i;; for (j=1;j<=num1;j++){ s2=num2*...int w; if (num1<num2) min=num1; else min=num2; for (w=1;w<=min;w+
2022-09-09:给定一个正整数 n,返回 连续正整数满足所有数字之和为 n 的组数 。...示例 1: 输入: n = 5 输出: 2 解释: 5 = 2 + 3,共有两组连续整数([5],[2,3])求和后为 5。...+ 2 + 3 + 4 + 5 答案2022-09-09: 如果有,N = (x+1) + (x+2) + ... + (x+k) 上式子可以化简为:N = kx + k(k+1)/2 左右两边同时乘以...k + 1),这个式子来说,只要给定不同的一组x和k,就对应一种不同的方案 进一步分析可以看出: 如果k为偶数,那么2x + k + 1就是奇数 如果k为奇数,那么2x + k + 1就是偶数 2N...= 左 K 右 2x + k + 1 2N 奇数因子K, 2x + k + 1 也就是说,对于每一种方案,k和2x + k + 1,一定是不同的,并且连奇偶性都相反 所以2N里任何一个奇数因子,可能作为
给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,找出 这个重复的数 。...你设计的解决方案必须不修改数组 nums 且只用常量级 O(1) 的额外空间。力扣287。 答案2021-11-01: 方法1:快慢指针。 抽象为环形链表求入环节点。 方法2:位操作。...此方法对于1到n都有的情况下适用。1到n,不是都有,不适合。 时间复杂度:O(N)。 额外空间复杂度:O(1)。 代码用golang编写。...} x1 := 0 x2 := 0 for i := 0; i < len(nums); i++ { x1 ^= i x2 ^= nums...[i] } return x1 ^ x2 } 执行结果如下: [图片] 左神java代码
2022-09-09:给定一个正整数 n,返回 连续正整数满足所有数字之和为 n 的组数 。...示例 1: 输入: n = 5 输出: 2 解释: 5 = 2 + 3,共有两组连续整数(5,2,3)求和后为 5。...+ 2 + 3 + 4 + 5 答案2022-09-09: 如果有,N = (x+1) + (x+2) + ... + (x+k) 上式子可以化简为:N = kx + k(k+1)/2 左右两边同时乘以...k + 1),这个式子来说,只要给定不同的一组x和k,就对应一种不同的方案 进一步分析可以看出: 如果k为偶数,那么2x + k + 1就是奇数 如果k为奇数,那么2x + k + 1就是偶数 2N...= 左 K 右 2x + k + 1 2N 奇数因子K, 2x + k + 1 也就是说,对于每一种方案,k和2x + k + 1,一定是不同的,并且连奇偶性都相反 所以2N里任何一个奇数因子,可能作为
2022-02-05:字典序的第K小数字。 给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。 注意:1 ≤ k ≤ n ≤ 10**9。...示例 : 输入: n: 13 k: 2 输出: 10 解释: 字典序的排列是 1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9,所以第二小的数字是 10。...这道题在leetcode上,所有题解都只能做到O( (logN) 平方)的解。 代码用golang编写。...len0++ } return len0 } func kth(max int, len0 int, kth0 int) int { // 中间范围还管不管的着...// 但是开始时,肯定是管的着的!
2023-07-11:给定正整数 n, 返回在 [1, n] 范围内具有 至少 1 位 重复数字的正整数的个数。 输入:n = 100。 输出:10。...首先计算n的位数和一个偏移量offset,其中偏移量初始值为1,算法通过迭代计算tmp = n / 10的商,直到商为0为止,每次迭代位数加1,偏移量乘以10。 3.计算每个长度的非重复数字的个数。...5.最后的结果为n加1减去noRepeat,即在[1, n]范围内至少有1位重复数字的正整数的个数。...该代码在给定正整数n的范围内采用了一种比较高效的算法,通过一系列的位运算和迭代计算,找出了每个位数下非重复数字的个数,然后根据n的位数和偏移量来计算在该位数下包含至少1位重复数字的正整数的个数,并将它们相加得出最终结果...该代码的时间复杂度为O(log10(n) * 2 ^ 10),其中n是输入的正整数。
我是川川,QQ2835809579,有问题留言or私我 原题: 输入一批正整数(以零或负数为结束标志),求其中的奇数和。...要求定义和调用函数int even(int n)判断整数n的奇偶性,当为奇数时返回1,否则返回0。...1: 0; } int main() { int n,sum=0; printf("请输入-批数整数: \n"); scanf( "%d", &n); while (n !
2021-08-11:按要求补齐数组。给定一个已排序的正整数数组 nums,和一个正整数 n 。...从 [1, n] 区间内选取任意个数字补充到 nums 中,使得 [1, n] 区间内的任何数字都可以用 nums 中某几个数字的和来表示。请输出满足上述要求的最少需要补充的数字个数。...福大大 答案2021-08-11: 用尽可能大的数字扩充range范围。尽可能大的数字是range+1。 时间复杂度:O(数组长度+log(n))。 空间复杂度:O(1)。 代码用golang编写。...= len(arr); i++ { // arr[i] // 要求:1 ~ arr[i]-1 范围被搞定!...for arr[i]-1 > range2 { // arr[i] 1 ~ arr[i]-1 range2 += range2 + 1 // range + 1 是缺的数字
大家好,又见面了,我是你们的朋友全栈君。 7-5 计算阶乘和 对于给定的正整数N,需要你计算 S=1!+2!+3!+…+N!。 输入格式: 输入在一行中给出一个不超过10的正整数N。...输出格式: 在一行中输出S的值。...输入样例: 3 输出样例: 9 #include using namespace std; int J(int n) { int jie=1; for...(int i = 1; i <=n; i++) { jie *= i; } return jie; } int main() { int nn; cin >> nn;...int sum=0; for (int i = 1; i <= nn; i++) sum += J(i); cout << sum; return 0; } 发布者:全栈程序员栈长,转载请注明出处
2024-07-13:用go语言,给定一个从0开始的长度为n的整数数组nums和一个从0开始的长度为m的整数数组pattern,其中pattern数组仅包含整数-1、0和1。...一个子数组nums[i..j]的大小为m+1,如果满足以下条件,则我们称该子数组与模式数组pattern匹配: 1.若pattern[k]为1,则nums[i+k+1] > nums[i+k]; 2.若...解释:模式 [1,1] 说明我们要找的子数组是长度为 3 且严格上升的。在数组 nums 中,子数组 [1,2,3] ,[2,3,4] ,[3,4,5] 和 [4,5,6] 都匹配这个模式。...大体步骤如下: 1.在主函数main中,定义了一个nums数组为[1,2,3,4,5,6]和一个模式数组pattern为[1,1]。...4.最后,在z数组中,从第m+1个值开始遍历,如果匹配长度等于模式数组长度m,则将计数器ans加一。 综上所述,总的时间复杂度为O(n)(n为nums数组的长度),总的额外空间复杂度为O(n)。
2024-07-06:用go语言,给定一个从0开始的长度为n的整数数组nums和一个从0开始的长度为m的整数数组pattern,其中pattern数组的元素只包含-1、0和1。...我们定义“匹配”的子数组,对于一个大小为m+1的子数组nums[i..j],如果对于pattern数组中的每个元素pattern[k]都满足以下条件: 1.如果pattern[k]为1,则nums[i+...要求计算有多少个子数组符合以上匹配条件。 输入:nums = [1,2,3,4,5,6], pattern = [1,1]。 输出:4。...解释:模式 [1,1] 说明我们要找的子数组是长度为 3 且严格上升的。在数组 nums 中,子数组 [1,2,3] ,[2,3,4] ,[3,4,5] 和 [4,5,6] 都匹配这个模式。...整体时间复杂度为 O(n),其中 n 为 nums 数组的长度。额外空间复杂度为 O(n),用于存储额外的辅助信息。
2024-08-28:用go语言,给定一个从1开始、长度为n的整数数组nums,定义一个函数greaterCount(arr, val)可以返回数组arr中大于val的元素数量。...3.对于第i次操作: 3.1.如果arr1中大于nums[i]的元素数量比arr2中大于nums[i]的元素数量多,将nums[i]加入arr1。...将arr1和arr2连接起来形成结果数组result。 要求返回整数数组result。 输入:nums = [2,1,3,3]。 输出:[2,3,1,3]。...4.返回将arr1和arr2连接而成的结果数组result。 总的时间复杂度分析为O(n log n),其中n为数组nums的长度。...总的额外空间复杂度为O(n),主要是用于存储排序后的数组、索引映射表、两个Binary Indexed Tree结构以及结果数组。
2024-07-31:用go语言,给定两个正整数数组arr1和arr2,我们要找到属于arr1的整数x和属于arr2的整数y组成的所有数对(x, y)中,具有最长公共前缀的长度。...(10, 1000) 的最长公共前缀是 10 。(100, 1000) 的最长公共前缀是 100 。 最长的公共前缀是 100 ,长度为 3 。...大体步骤如下: 要解决给定问题,主要分为以下大体步骤: 1. 初始化一个集合:创建一个映射(集合)has,用于存储arr1中所有整数的前缀。这个集合将用于后续查找整数是否在arr1中的某个前缀。...提取前缀:遍历arr1中的每个整数,对于每个整数,计算其每个可能的前缀(即数字逐位除以10,直到数字为0),并将每个前缀存入has集合中。这将使得has含有arr1中所有数字的所有前缀。 3....如果存在,则更新mx为当前整数的前缀值,与当前存储的mx进行比较,保留较大的值。 5. 计算结果:检查mx的值,如果mx为0,表示没有找到公共前缀,返回0。
领取专属 10元无门槛券
手把手带您无忧上云