![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷题
三个臭皮姜
这个作者很懒,什么都没留下…
展开
-
LeetCode刷题笔记(简单)---数组中两元素的最大乘积(C语言,两种思路)
题目如下:第一种思路当然是万能的暴力破解法:int maxProduct(int* nums, int numsSize){ int max=0; for(int i=0;i<numsSize;i++) { for(int j=i+1;j<numsSize;j++) { max = max>(nums[i]-1)*(nums[j]-1)?max:(nums[i]-1)*(nums[j]-1);原创 2021-04-16 22:41:16 · 417 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---数组拆分(C语言,涉及标准库函数qsort()使用)
题目如下:通过观察可以发现规律:先对原来的数组进行排序,两两排序后的数组,只要取数组单数位置上的元素即为取每组里的最小值,最后求和进行相加即可。本来呢,我自己写了一个冒泡排序来先对原数组排序,然后后面的操作是一样的,执行代码的时候也没有报错,但是我提交的时候,提示我超出了时间限制,其原因是提交的时候测试的数组比较大,我用冒泡的话时间花的确实比较长。于是在dev上测试我的思路,代码如下:#include<stdio.h>#define N 6int main(){ int su原创 2021-04-15 23:27:14 · 374 阅读 · 0 评论 -
C语言统计数字出现的次数
给定一个数组[1,4,2,1,4,5,1,6],统计每个数字出现的次数并输出(不重复)。以前上python课的时候遇到过这样类似的题,Python是用键和值也就是字典来做的,这次自己用C语言写一下。#include<stdio.h>int main(){ int arr[8]={1,4,2,1,4,5,1,6};//给定数组 int res[10]={0};//新建一个数组,数组的容量其实取决于arr数组里最大元素的值 for(int i=0;i<8;i++) { re原创 2021-04-12 22:18:10 · 26192 阅读 · 4 评论 -
LeetCode刷题笔记(简单)---拿硬币(C语言)
题目如下:看完题目我的第一想法是,既然每次能拿走其中一枚或两枚,那就每次拿2枚,则让堆的数量每次-2就行,等小于等于的时候便是拿完了。int minCount(int* coins, int coinsSize){ int count=0; for(int i=0;i<coinsSize;i++) { while(coins[i]>0) { coins[i]=coins[i]-2; co原创 2021-03-31 19:25:21 · 373 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---在既定时间做作业的学生人数(C语言)
题目如下:有史以来遇到的最简单的一个题。int busyStudent(int* startTime, int startTimeSize, int* endTime, int endTimeSize, int queryTime){ int count=0; for(int i=0;i<startTimeSize;i++) if(queryTime>=startTime[i]&&queryTime<=endTime[i])//满足条件原创 2021-03-31 18:57:54 · 175 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---矩阵对角线元素的和(C语言)
题目如下:题目简单明了,不再解释。我的思路是应该有两种办法,第一种是区分矩阵的行数是奇数还是偶数,因为是正方形矩阵,所以列数与行数一致,如果是奇数,那么主对角线和副对角线之间会有一个交点,求和之后把这个点的值减去即可,如果行数是偶数,那就不用减;第二种无论行数是奇数还是偶数,想办法找到一个通式,即无论哪种情况都适用;这里实现了第一种:int diagonalSum(int** mat, int matSize, int* matColSize){ int sum=0; for(in原创 2021-03-29 11:49:50 · 287 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---找到最高海拔(C语言)
题目如下:这题题目意思也比较明确,初始海拔为0,然后得到的新数组来自于与gain数组的和。第一次提交:int largestAltitude(int* gain, int gainSize){ int *res = (int *)malloc(sizeof(int)*(gainSize+1)); res[0]=0; int maxnum=0; for(int i=1;i<gainSize+1;i++) { res[i]=res[i-1]+g原创 2021-03-28 22:27:15 · 360 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---访问所有点的最小时间(C语言)
题目如下:题目乍一看好像挺吓人,其实仔细观察之后不难发现规律:两个点之间的访问时间=max(两点横坐标之差,两点纵坐标之差)如果存在多个点,那么累加即可。第一次提交:int minTimeToVisitAllPoints(int** points, int pointsSize, int* pointsColSize){ int sum = 0,t1,t2; for(int i=1;i<pointsSize;i++) { t1 = abs(poin原创 2021-03-26 12:04:57 · 147 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---有多少小于当前数字的数字(C语言)
本题很简单了。int* smallerNumbersThanCurrent(int* nums, int numsSize, int* returnSize){ int* res = malloc(sizeof(int) * numsSize); int count=0; for(int i=0;i<numsSize;i++) { for(int j=0;j<numsSize;j++) { if(num.原创 2021-03-25 12:37:47 · 175 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---解压缩编码列表(C语言)
题目如下:一开始没看懂题目啥意思,直到看了示例才明白。所以解题思路应该是:nums数组的奇数位为对应偶数位出现的次数,因而要将其作为循环条件。第一次提交的代码:int* decompressRLElist(int* nums, int numsSize, int* returnSize){ int *res = (int *)malloc(sizeof(int)*numsSize); int k=0; for(int i=0;i<numsSize;i=i+2)原创 2021-03-23 20:19:39 · 130 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---统计匹配检索规则的物品数量(C语言)
题目如下:题目意思:按接收到的ruleKey作为键索引,即对应二维数组的行,按接收到的ruleValue作为值索引,即对应二维数组的列,如果二者都满足条件,那么计数+1.第一次提交:#include<string.h>int countMatches(char *** items, int itemsSize, int* itemsColSize, char * ruleKey, char * ruleValue){ int count = 0; for(int i=0原创 2021-03-22 11:39:14 · 178 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---重新排列数组(C语言)
题目如下:题目的意思其实比较清楚了:重新排列的数组中,偶数位置的元素从n开始,奇数位置从0开始。故而有如下代码:int* shuffle(int* nums, int numsSize, int n, int* returnSize){ int *results = (int *)malloc(numsSize * sizeof(int));//重新分配内存 int count=2;//用于控制区分偶数位和奇数位 for(int k=0,i=0,j=n;k<numsSi原创 2021-03-21 14:19:23 · 374 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---最富有客户的资产总量(C语言)
题目如下:题目意思很清楚:就是要把二维数组里面的元素相加,然后返回和的最大值。第一次提交:int maximumWealth(int** accounts, int accountsSize, int* accountsColSize){ int res[50]={0},MaxNum=0; for(int i=0;i<accountsSize;i++) { for(int j=0;j<accountsColSize[i];j++)原创 2021-03-20 13:42:02 · 881 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---数组异或操作(C语言)
题目如下:题目的意思也很明了:题目给定的n用于定数组的长度,start参与数组元素的确定,而数组每个元素的赋值公式为:nums[i] = start + 2*i所以解题的思路很简单,首先要创建数组,接着为元素赋值,然后依次将这些元素按位异或即可,而C语言的异或操作为“^”。我的代码如下:int xorOperation(int n, int start){ //创建数组 int nums[n],result; for(int i=0;i<n;i++) {原创 2021-03-19 10:35:58 · 519 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---拥有最多糖果的孩子(C语言)
题目如下:题目的示例很长,解释的很详细,总的来说思路就是:先找到目前拥有最多数量的孩子,找到这个最大值,然后依次加上额外分配来的与这个最大值比较,如果能够比这个值大,那么这个位置赋值为true,反之为false.所以可以写出下面的代码:bool* kidsWithCandies(int* candies, int candiesSize, int extraCandies, int* returnSize){ //先动态分配内存,存储着结果的一个bool型数组 bool *results原创 2021-03-18 20:49:43 · 159 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---好数对的题目(C语言)
题目如下:第一次提交:int numIdenticalPairs(int* nums, int numsSize){ int count=0; for(int i=0;i<numsSize;i++) { for(int j=1;j<numsSize;j++) if (nums[i]==nums[j]&&(i<j)) count++; } return cou原创 2021-03-17 11:58:38 · 413 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---一维数组的动态和(C语言)
题目如下:我的通过代码:int* runningSum(int* nums, int numsSize, int* returnSize){ for(int i=1;i<numsSize;i++) { nums[i] = nums[i] + nums[i-1]; } *returnSize = numsSize; return nums;}我又尝试把“nums[i] = nums[i] + nums[i-1];”换成原创 2021-03-16 10:50:08 · 519 阅读 · 0 评论 -
LeetCode刷题笔记(简单)---猜数字
题目如下:题本身比较简单,因为自己也比较菜,只能从简单的练起。我的通过代码:int game(int* guess, int guessSize, int* answer, int answerSize){ int count = 0; for(int i=0;i<guessSize;i++) { if(guess[i]==answer[i]) { count++; } } retu原创 2021-03-15 22:13:45 · 115 阅读 · 0 评论 -
python去掉最高分和最低分求平均分
题目:‘10.28在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1到100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。‘’’难度:一星python代码如下:list1 = input("please input scores:")newlist = list(sorted((list1.split())))numbers = [int(x) for x in newlist] # 用列表生成式numbers.remove(numbers原创 2020-10-28 20:41:11 · 59433 阅读 · 6 评论 -
python实现CCF题--出现次数最多的数
题目如下:说明:我的输入格式不一样跟原题一模一样,只是把功能实现了。代码如下:s = input("请输入元素:")newlist = list(s.split()) # 取出每个元素,装入列表dict1 = {} # 用字典来存储出现的数字及其对应出现的次数for i in newlist: if i in dict1: dict1[i] += 1 # 如果已存在则个数加一 else: dict1[i] = 1 # 如果不存在则为原创 2020-10-27 18:32:58 · 511 阅读 · 0 评论