C语言-数组-算法
算法及数组的练习
散风少年
这个作者很懒,什么都没留下…
展开
-
3. 无重复字符的最长子串
首先,判断当前字符 `s[i]` 是否在当前子串中已经出现过(即 `charIndex[s[i]] >= start`),如果是,则需要更新子串的起始位置为重复字符的下一个位置。然后,将当前字符 `s[i]` 的下标赋值给 `charIndex[s[i]]`,表示该字符已经出现过,并更新当前子串的长度 `currentLen`。然后,定义了变量 `maxLen` 用于存储最长子串的长度,变量 `start` 用于记录当前子串的起始位置,以及数组 `charIndex` 用于记录字符出现的位置。原创 2023-08-16 09:01:25 · 81 阅读 · 0 评论 -
2325. 解密消息
例如,key = "happy boy"(实际的加密密钥会包含字母表中每个字母 至少一次),据此,可以得到部分对照表('h' -> 'a'、'a' -> 'b'、'p' -> 'c'、'y' -> 'd'、'b' -> 'e'、'o' -> 'f')。示例 1:输入:key = "the quick brown fox jumps over the lazy dog", message = "vkbs bs t suepuv",输出:"this is a secret",解释:对照表如上图所示。原创 2023-08-16 09:00:29 · 61 阅读 · 0 评论 -
2315. 统计星号
在`countStars`函数中,我们使用一个变量`count`来记录星号的数量,使用一个变量`inPair`来判断当前字符是否在竖线对之间。示例 3:输入:s = "yo|uar|e**|b|e***au|tifu|l",输出:5,解释:需要考虑的字符加粗加斜体后:"yo|uar|e**|b|e***au|tifu|l"。解释:不在竖线对之间的字符加粗加斜体后,得到字符串:"l|*e*et|c**o|*de|"。示例 1:输入:s = "l|*e*et|c**o|*de|",输出:2。原创 2023-08-16 08:59:29 · 85 阅读 · 0 评论 -
1929. 数组串联
定义一个名为`getConcatenation`的函数,它接受一个整数数组`nums`、数组大小`numsSize`和一个指向整数的指针`returnSize`。该函数返回一个长度为`2 * numsSize`的整数数组`ans`,其中`ans`由两个`nums`数组串联形成。在`main`函数中,我们定义了一个示例数组`nums`,然后调用`getConcatenation`函数来获取答案数组`ans`。ans[i + n] == nums[i],具体而言,ans 由两个 nums 数组 串联 形成。原创 2023-08-16 08:58:45 · 152 阅读 · 0 评论 -
1920. 基于排列构建数组
解释:数组ans构建如下:ans = [nums[nums[0]], nums[nums[1]], nums[nums[2]], nums[nums[3]], nums[nums[4]], nums[nums[5]]]= [nums[0], nums[2], nums[1], nums[5], nums[3], nums[4]]= [0,1,2,4,5,3]这是 `main` 函数的定义,其中定义了一个示例数组 `nums`,并通过计算数组元素个数的方式得到数组的大小 `numsSize`。原创 2023-08-16 08:58:15 · 61 阅读 · 0 评论 -
两个数组的交集
给定两个数组 nums1 和 nums2 ,返回 它们的交集。解释:[4,9] 也是可通过的,提示:1 <= nums1.length, nums2.length <= 1000。示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4],输出:[9,4]示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2],输出:[2]//遍历第二个数组,如果元素在hash数组中存在且未被标记为-1,则将其加入结果数组。原创 2023-08-16 08:57:22 · 82 阅读 · 0 评论 -
力扣第一题,C语言实现,两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。提示:2 <= nums.length <= 104,-109 <= nums[i] <= 109,-109 <= target <= 109。示例 1:输入:nums = [2,7,11,15], target = 9,输出:[0,1]示例 2:输入:nums = [3,2,4], target = 6,输出:[1,2]原创 2023-10-28 11:41:05 · 365 阅读 · 0 评论 -
C语言:字符统计及重排
else if(isupper(s[j])&& isupper(s[j+1])&&s[j>s[j+1]]){//同大写,需按自然顺序。} else if (islower(s[j])&& islower(s[j+1])&&s[j]>s[j+1]){ //同小写。}else if(hash[s[j]]==hash[s[j+1]]){ //若个数相同则需要考虑下方场景。输出描述:按照字母出现次数从大到小的顺序输出各个字母和字母次数,用英文分号分隔,注意末尾的分号:字母和次数间用英文冒号分隔.原创 2023-08-11 08:43:26 · 364 阅读 · 0 评论 -
C语言:力扣88题,删除字符串中字符最少字符
最后,再次遍历字符串,删除出现频率为minCount的字符,并输出结果。// 外层循环遍历字符串的每个字符,内层循环将当前字符之后的字符串逐渐前移,来删除最小频率的字符。示例2:输入:aabbccdd,输出:empty,说明:如果字符串的字符都被删除,则范围empty。* 然后遍历字符串统计每个字符串出现的频率,然后找到频率最小的字符删除,最后在遍历输出。* 首先定义长度为26的数组count,用于记录每个小写字母出现的频率,删除字符串中出现次数最少的字符,如果有多个字符出现次数一样,则都删除.原创 2023-08-10 22:15:21 · 264 阅读 · 0 评论 -
C语言:字符串的解压缩
void decompressString(char* str) { //解压。if(num == 0){//字符前没有数字 只放一个字符。void compressString(char* str) { //压缩。printf("请输入要解压缩的字符串:");printf("请输入要压缩的字符串:");printf("压缩后的字符串为:");原创 2023-08-10 22:14:23 · 1219 阅读 · 0 评论 -
C语言:文件调用
在 `demo.c` 文件中,我们首先定义了三个数组 `arr1`、`arr2`、`arr3`,并分别调用了选择排序、冒泡排序和插入排序函数对它们进行排序。然后,我们输出排序前和排序后的数组内容。首先,我们在 `sort.c` 文件中实现选择排序、冒泡排序和插入排序的函数。接下来,我们在 `sort.h` 文件中声明这几个排序函数。最后,在 `demo.c` 文件中调用这几个排序函数。编译并运行 `demo.c` 文件,即可看到排序结果。原创 2023-08-10 22:13:19 · 548 阅读 · 0 评论 -
C语言:力扣268,丢失的数字
示例 1:输入:nums = [3,0,1],输出:2,解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。示例 3:输入:nums = [9,6,4,2,3,5,7,0,1],输出:8,解释:n = 9,因为有 9 个数字,所以所有的数字都在范围 [0,9] 内。3. 根据等差数列的求和公式,计算期望的和 `expectedSum`,即 `numsSize * (numsSize + 1) / 2`,其中 `numsSize` 是数组 `nums` 的长度。原创 2023-08-10 22:11:46 · 191 阅读 · 0 评论 -
C语言:力扣263题,丑数
/这个函数首先检查输入的数是否小于等于0,如果是则返回false。然后,它使用循环将输入的数除以2、3和5,直到无法再整除为止。最后,它检查剩余的数是否等于1,如果是则返回true,否则返回false。示例 3:输入:n = 14,输出:false,解释:14 不是丑数,因为它包含了另外一个质因数 7。解释:1 没有质因数,因此它的全部质因数是 {2, 3, 5} 的空集。示例 1:输入:n = 6,输出:true,解释:6 = 2 × 3。示例 2:输入:n = 1,输出:true。原创 2023-08-10 22:10:50 · 117 阅读 · 0 评论 -
C语言:力扣202题,快乐数
这个算法使用了快慢指针的思想,快指针每次计算两次平方和,慢指针每次计算一次平方和,直到两个指针相遇。如果最终相遇的数不是1,则说明不是快乐数。如果这个过程 结果为 1,那么这个数就是快乐数。解释:12 + 92 = 82,82 + 22 = 68,62 + 82 = 100,12 + 02 + 02 = 1。示例 2:输入:n = 2,输出:false,提示:1 <= n <= 231 - 1。printf("%d 不是快乐数\n", n);printf("%d 是快乐数\n", n);原创 2023-08-10 22:10:13 · 202 阅读 · 0 评论 -
C语言:力扣169题,多数元素
这样,你就可以在`main`函数中调用`majorityElement`函数来解决多数元素的问题。给定一个大小为 n 的数组 nums ,返回其中的多数元素。提示:n == nums.length,1 <= n <= 5 * 104,-109 <= nums[i] <= 109。该算法的基本思想是通过消除不同的元素对多数元素的计数进行抵消。你可以根据需要修改数组和数组大小,并在你的程序中使用这个合并后的代码来找到多数元素。示例 2:输入:nums = [2,2,1,1,1,2,2],输出:2。原创 2023-08-10 22:09:15 · 62 阅读 · 0 评论 -
C语言:验证回文串,力扣125题
我们使用`left`和`right`指针分别指向字符串的开头和结尾,并向中间移动。如果有任何不匹配的字符,我们返回`false`,否则返回`true`。在`main`函数中,我们使用示例字符串调用`isPalindrome`函数,并打印结果。输出将是`true`或`false`,表示字符串是否是回文串。示例 2:输入:s = "race a car",输出:false。示例 3:输入:s = " ",输出:true。解释:在移除非字母数字字符之后,s 是一个空字符串 ""。否则,返回 false。原创 2023-08-10 22:08:00 · 183 阅读 · 0 评论 -
C语言:最后一个单词的长度
这个解决方案中,我们首先计算字符串的长度,并从字符串末尾开始向前遍历,直到找到第一个非空格字符。最后,我们返回最后一个单词的长度。示例 2:输入:s = " fly me to the moon ",输出:4,解释:最后一个单词是“moon”,长度为4。示例 3:输入:s = "luffy is still joyboy",输出:6,解释:最后一个单词是长度为6的“joyboy”。示例 1:输入:s = "Hello World",输出:5,解释:最后一个单词是“World”,长度为5。原创 2023-08-10 22:05:31 · 730 阅读 · 0 评论 -
从键盘输入n和a的值,计算a+aa+aaa+...+aa...a(n个a)的值。
原创 2023-08-02 08:44:08 · 171 阅读 · 0 评论 -
输出Fibonacci数列的前40项
原创 2023-08-02 08:41:09 · 301 阅读 · 0 评论 -
一个皮球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求当它第10次落地时, 共经过了多少米,第10次反弹多高?(画图辅助理解循环真正次数) 100*1/2*1
原创 2023-08-02 08:40:06 · 192 阅读 · 0 评论 -
输入数字 判断是否为素数
原创 2023-08-01 08:58:27 · 56 阅读 · 1 评论 -
输入2个数 求这两个数的最大公约数
原创 2023-08-01 08:53:21 · 470 阅读 · 1 评论 -
逢七过,一百以内能被7整除的数字
原创 2023-08-02 08:49:39 · 682 阅读 · 0 评论 -
计算并输出200-400之间不能被3整除的整数的和
原创 2023-08-02 08:47:18 · 713 阅读 · 0 评论 -
输入一个正整数,输出它的阶乘。(考虑0的问题)
原创 2023-08-02 08:40:55 · 445 阅读 · 0 评论 -
输入2个数 求他们的最小公倍数
原创 2023-08-01 08:54:06 · 429 阅读 · 1 评论 -
C语言求1-2+3-4+5-6+7-8+9....-100的值。 (正负如何切换)
c语言 基础有关练习题。原创 2023-08-01 15:22:27 · 593 阅读 · 0 评论 -
编程计算1*2*3+3*4*5+5*6*7+...+99*100*101的值 (考虑循环变量更改的规律)
c语言 基础相关练习题。原创 2023-08-01 15:20:10 · 300 阅读 · 0 评论 -
求以下数列前十五项的和:2/1,3/2,5/3,8/5,13/8,21/13…。
原创 2023-08-02 08:43:06 · 177 阅读 · 0 评论 -
求输入整数的各个数位之和。
原创 2023-08-02 08:45:30 · 67 阅读 · 0 评论 -
输出所有200-400之间能被3整除且个位数字为6的整数
原创 2023-08-02 08:48:19 · 682 阅读 · 0 评论 -
打印数字回文塔
原创 2023-08-01 08:57:24 · 84 阅读 · 0 评论 -
打印99乘法表
原创 2023-08-01 08:52:26 · 729 阅读 · 1 评论 -
C语言:1-100求和
原创 2023-08-01 15:11:28 · 234 阅读 · 1 评论 -
求125之内自然数中偶数之和。
原创 2023-08-02 08:46:27 · 203 阅读 · 0 评论 -
数组的拼接
原创 2023-08-06 15:46:16 · 48 阅读 · 0 评论 -
删除数组中所有大于10的元素
原创 2023-08-07 08:52:47 · 87 阅读 · 0 评论 -
C语言:对字符串内数据逆序后输出
另一种写法。原创 2023-08-07 08:56:21 · 62 阅读 · 0 评论 -
数组的逆序x*
双指针的写法。原创 2023-08-06 15:46:51 · 38 阅读 · 0 评论 -
数组的比较
原创 2023-08-06 15:46:34 · 47 阅读 · 0 评论
分享