C语言编程算法
C语言算法题记录
Beiyux
路漫漫其修远兮,一起加油呀
展开
-
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解题思路:当前一个元素大于0时,当前元素则等于它本身加上前一个元素。int maxSubArray(int* nums, int numsSize){ int len=numsSize , max=nums[0] ; for(int i=0; i&原创 2021-09-20 11:20:27 · 4305 阅读 · 0 评论 -
阶乘后的零,给定一个整数 n,返回 n! 结果尾数中零的数量。
题目描述阶乘后的零,给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.解析:仅有X5*2的倍数可以形成尾部0,容易理解2的倍数要多于型为X5的因子,所以统计5^i的个数即可int trailingZeroes(int n){ int res=0; do{ res+=n/5; n=n/5;原创 2021-09-13 14:13:28 · 544 阅读 · 0 评论 -
只出现一次的数字,给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
题目描述只出现一次的数字,给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解析:直接利用位运算,通过异或来进行判断int singleNumber(int* nums, int numsSize){ int n = nums[0]; for(int i=1; i<numsSize;i++) n^=nums[原创 2021-09-13 14:12:58 · 599 阅读 · 0 评论 -
经典杨辉三角
题目描述在杨辉三角中,每个数是它左上方和右上方的数的和。输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]代码int** generate(int numRows, int* returnSize, int** returnColumnSizes){ int row = 0; int col = 0; int** ppRes = (int**)malloc(numRows * si原创 2021-09-13 14:12:28 · 59 阅读 · 0 评论 -
计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
6.题目描述计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例输入8 输出4解题思路若x小于1,返回x。设置循环i<x:1:i平方等于x,符合题意2:当i+1的平方大于x时,此时i为平方根的整数值int mySqrt(int x){ long i; if(x <= 1){ return x; } for(i=0;i<x;i++){ if((i*i)原创 2021-09-13 14:09:20 · 1330 阅读 · 0 评论 -
给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串,判断字符串是否有效。
题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例输入: "()"输出: true输入: "()[]{}"输出: true解题思路栈的思路,当出现右括号时,直接和栈顶元素比较。要在栈不为空的情况下比较;如果栈为空,就没有元素比较了,直接返回false。如果还有未匹配的括号留在栈内,说明不符合题目条件,返回falsela原创 2021-09-13 14:08:46 · 3692 阅读 · 1 评论 -
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
4.题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解题思路先记录当前end的值用于和index进行对比,若end和index值相同,则将start移动到当前索引index下一个位置然后从新计算长度int lengthOfLongestSubstring(char * s){ int start = 0; int end = 0原创 2021-09-13 14:08:05 · 3746 阅读 · 2 评论 -
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
项目ValueValueValueValueValueValueValue电脑$1600手机$12导管$1原创 2021-09-13 14:07:22 · 297 阅读 · 0 评论 -
C语言编程-对数字进行分类
前言公众号的小伙伴们大家好,我是木偶人,本次每周题库我给大家带来了一道数字分类的题目,我们一起来看看吧!题目描述给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和;A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4…;A3 = 被5除后余2的数字的个数;A4 = 被5除后余3的数字的平均数,精确到小数点后1位;A5 = 被5除后余4的数字中最大数字。输入每个输入包含1个测试用例。每个测试用例先给出一个不超原创 2020-10-21 22:36:44 · 1441 阅读 · 0 评论 -
猴子爬山—递推算法(图文详解)
前言大家好,我是木偶人,本次每周题库我给大家带来了一道算法题目——猴子爬山,这道题目运用到了数组递推算法的求解方法,我们一起来看看吧!题目描述一个猴子在一座不超过30级的小山上爬山跳跃,猴子上山一步可跳1级或跳3级,试求上山有多少种不同的爬法。样例输入30样例输出58425解题思路:首先探求f[k]递推关系设n=30,上山最后一步到达第30级台阶,完成上山,共有f[30]种不同的爬法;到第30级之前位于哪一级呢?第一种是位于第29级(上跳1级即到),有f[29]种;第二种于第27级(上原创 2020-06-13 14:59:50 · 6097 阅读 · 0 评论 -
排序-冒泡排序法C语言
题目用冒泡排序法将十个数据进行排序输入5 7 9 4 6 8 1 2 3 10输出1 2 3 4 5 6 7 8 9 10完整代码#include<stdio.h>void main(){ int a[10]; int i, j, temp; // 输入10个整型数据 printf("输入十个数字: \n"); for (i = 0; i < 10; i++) scanf("%d",原创 2020-05-11 11:09:46 · 646 阅读 · 0 评论 -
判断中心对称图形C语言
题目判断输入是否为中心对称图形输入格式从第一行开始输入一个3*3的正方形矩阵,矩阵里只会含有W、M、O三个字母输出格式若是中心对称图形,则输出YES若不是中心对称图形,则输出NO样例输入WWWOOOMMM输出YES完整代码#include <stdio.h>#include <math.h>char a[5][5];//定义二维数组int gt(int x,int y,int x1,int y1){ if(a[x][y] == a[x1][原创 2020-05-11 11:02:12 · 1486 阅读 · 0 评论