- 博客(32)
- 资源 (1)
- 收藏
- 关注
原创 关于五月集训的一切
机缘在某个夜深人静的清晨,在b站认识了英雄哥,从此之后被英雄哥每道题过了之后的那一句《过辣》和那《令人振奋》的背景音乐所深深吸引。从而踏上了“早睡早起”的大军之中(英雄哥直播间),在那之后英雄哥创建了星球,随着我加入星球,我的打怪升级的道路就此拉开帷幕收获做为一个刚刚接触算法的大一学生,算法无疑学习编程是最难的和不能略过的重要一环,然而五月集训为我提供了丰富的学习方案。1.第一件事就是定自己的五月规划,通过自己的规划来逼自己学习,我也可以通过其他人的规划来完善自己的规划。2.星球中有着不
2022-05-27 11:52:08
351
2
原创 14. 线性枚举(二) - 统计法入门
1550. 存在连续三个奇数的数组给你一个整数数组 arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true ;否则,返回 false 。思路: (1)写一个函数进行判断数字的奇偶性; (2)分别判断 i,i+1,i+2的奇偶;int pand(int n){ if(n%2==1){ return 1; }else{ return 0; }}bool threeCo...
2022-04-30 21:34:49
173
原创 13. 线性枚举(一) - 最值算法
485. 最大连续 1 的个数给定一个二进制数组 nums , 计算其中最大连续 1 的个数。思路: (1)每次遇见0时,来重新更新最大值 (2)注意数组最后也要更新最大值int findMaxConsecutiveOnes(int* nums, int numsSize){ int i; int sum=0,ans,a=0;; for(i=0;i<numsSize;++i){ if(nums[i]==1)...
2022-04-29 15:42:00
260
原创 13.变量交换算法
面试题 16.01. 交换数字编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。思路: (1)使用int 可能造成越界,所以用long就可以; (2)利用两个变量和,来进行变量的交换;/** * Note: The returned array must be malloced, assume caller calls free(). */int* swapNumbers(int* numbers, int num...
2022-04-28 10:34:57
135
原创 二分快速幂
1.递归typedef long long ll;ll f(ll a, ll b, ll m){ if(b == 0) return 1; else if(b % 2 == 1) return a * f(a, b - 1, m) % m; else{ ll num = f(a, b/2, m) % m; return num * num % m; } }优化:#define ll long longll f(ll a, ll b, l...
2022-04-27 15:11:09
172
原创 求最大公约数
1.普通法我可以从大到小枚举 a 的约数,然后再判断它是不是 b 的约数,就能找到最大的那个满足条件的约数,就是所求 gcd 了int gcd(int a, int b) { int i; for(i = a; i >= 2; --i) {//从大到小,才能保证最大公约数 if(a % i == 0 && b % i == 0) return i; } return 1;}2. 辗转相除法求最.
2022-04-25 20:16:52
229
原创 11.最大公约数
1979. 找出数组的最大公约数给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。两个数的最大公约数 是能够被两个数整除的最大正整数。思路:(1)分别找出最大值和最小值;(2)利用辗转相除法求最大公约数并返回;int gcd(int a,int b){ return !b?a:gcd(b,a%b);}int findGCD(int* nums, int numsSize){ int i; int a=0,b=nums[0];..
2022-04-25 19:58:51
265
原创 10.因子和
1390. 四因数给你一个整数数组 nums,请你返回该数组中恰有四个因数的这些整数的各因数之和。如果数组中不存在满足题意的整数,则返回 0 。思路:(1)跟据题目只能分为两种
2022-04-24 22:14:42
239
原创 9.因子数
Problem - 1492A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... shows the first 20 humble numbers.Now given a humble number, please writ.
2022-04-22 06:04:08
486
原创 8. 因子分解和枚举
1952. 三除数给你一个整数 n 。如果 n 恰好有三个正除数 ,返回 true ;否则,返回 false 。如果存在整数 k ,满足 n = k * m ,那么整数 m 就是 n 的一个 除数 。思路:(1)循环条件(当你i<=n时,循环时间过长,导致超时),比如,16有一个因子为 那么,它必然有另一个因子为 16/2 = 8,所以,我们只需要遍历到 i * i <= num 即可(2)当16有个因子为4时,另一个因子也为4,但是只能算一次,剩余都算2次(3)最.
2022-04-21 14:08:22
290
原创 7. 算术基本定理
507. 完美数对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。给定一个 整数 n, 如果是完美数,返回 true;否则返回 false。思路: 循环条件(当你i<=n时,循环时间)bool checkPerfectNumber(int num){ int i; int sum=0; for(i=1;i*i<=num;++i){ if(num%i==0){ sum+.
2022-04-20 20:30:16
655
原创 埃式筛选法求素数的个数
1.用一个标记数组 a[n]=0 ,其中 a[i]=0 代表 i 为素数,否则为非素数。首先,因为 0和 1 都不是素数,所以,标记 a[0]=a[1]=1;2.如果当统计到一个素数2时,将2*2,2*3,2*4......................都标记为1,表明不是素数。#define maxn ..... // 定义一个最大值 bool a[maxn]={0}; ..
2022-04-19 06:31:17
357
原创 6.素数的判定与筛选
剑指 Offer 49. 丑数我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。利用动态规划,来计算下一个最小丑数;int nthUglyNumber(int n) { int dp[n + 1]; dp[0] = 1; int p2 = 0, p3 = 0, p5 = 0; for (int i = 1; i < n; i++) { int num2 = dp[p2] * 2.
2022-04-19 06:07:59
106
原创 5,计数法
1748. 唯一元素的和给你一个整数数组nums。数组中唯一元素是那些只出现恰好一次的元素。请你返回 nums中唯一元素的 和int firstUniqChar(char * s){ int ret[26]={0}; int n=strlen(s); for(int i=0;i<n;i++){ ++ret[(s[i]-'a')]; } for(int i=0;i<n;i++){ if(ret[(...
2022-04-18 20:16:01
286
原创 4.组合数
119. 杨辉三角 II给定一个非负整数numRows,生成「杨辉三角」的前numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。/** * Note: The returned array must be malloced, assume caller calls free(). */int* getRow(int rowIndex, int* returnSize) { *returnSize = rowIndex + 1; int* C[ro...
2022-04-16 12:53:56
54
原创 C语言的二维数组申请
进行例题讲解832. 翻转图像给定一个 n x n 的二进制矩阵 image ,先 水平 翻转图像,然后 反转 图像并返回 结果 。水平翻转图片就是将图片的每一行都进行翻转,即逆序。 例如,水平翻转 [1,1,0] 的结果是 [0,1,1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。 例如,反转 [0,1,1] 的结果是 [1,0,0]/** * Return an array of arrays of size *returnSi...
2022-04-15 22:31:43
1176
原创 三, 矩阵
1672. 最富有客户的资产总量给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。int maximumWealth(int** accounts, int accountsSize, int* accountsColSize){ int i, .
2022-04-15 22:08:50
223
原创 一,线性表(链表)
文章目录一、链表是什么? 二、相关操作 总结一、链表是什么?不要求逻辑上相邻的两个元素物理上也相邻;通过“链”建 立起数据元素之间的逻辑关系。• 插入、删除不需要移动数据元素,只需要修改“链”。二、相关操作1.定义typedef struct LNode *List;struct LNode{ ElementType Data; List Next;}; struct Lnode L;List PtrL;2.求表长int Length ...
2022-04-15 00:25:00
73
原创 二, 数列
509. 斐波那契数斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给定 n ,请计算 F(n) 。int fib(int n){ int f[31],i; f[0] = 0; f[1] = 1; for(i=2;i<=n;++i){ .
2022-04-14 23:26:05
66
原创 一,幂和对数
342. 4的幂给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4xbool isPowerOfFour(int n){ if(n <= 0) { return false; } int x = (int)(log2(n) / log2(4) + 1e-6); //加上一个.
2022-04-13 21:35:08
254
原创 leetcode 27. 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,.
2022-04-08 08:47:04
57
原创 leetcode 26. 删除有序数组中的重复项
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。输入:n.
2022-04-08 08:44:36
52
原创 一,线性表(顺序表)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、线性表是什么? 二、相关操作 1.库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任.
2022-04-07 11:08:27
108
原创 leetcode 6055. 转化时间需要的最少操作数
给你两个字符串 current 和 correct ,表示两个 24 小时制时间 。24 小时制时间 按 "HH:MM" 进行格式化,其中 HH 在 00 和 23 之间,而 MM 在 00 和 59 之间。最早的 24 小时制时间为 00:00 ,最晚的是 23:59 。在一步操作中,你可以将 current 这个时间增加 1、5、15 或 60 分钟。你可以执行这一操作 任意 次数。返回将 current 转化为 correct 需要的 最少操作数示例 1:输入:current =.
2022-04-06 09:15:00
354
原创 leetcode 611. 有效三角形的个数
给定一个包含非负整数的数组nums ,返回其中可以组成三角形三条边的三元组个数。输入: nums = [2,2,3,4]输出: 3解释:有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3int cmp(const void *a, const void *b) { return *(int *)b - *(int *)a;}int triangleNumber(int* nums, int numsSize){ int ..
2022-04-02 23:16:18
250
原创 2095. 删除链表的中间节点
给你一个链表的头节点 head 。删除 链表的 中间节点 ,并返回修改后的链表的头节点 head 。长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点(下标从 0 开始),其中 ⌊x⌋ 表示小于或等于 x 的最大整数。 对于 n = 1、2、3、4 和 5 的情况,中间节点的下标分别是 0、1、1、2 和 2 。输入:head = [1,3,4,7,1,2,6]输出:[1,3,4,1,2,6]解释:上图表示给出的链表。节点的下标分别标注在每个节点的下方。由于 n ...
2022-03-31 20:09:34
979
原创 735. 行星碰撞
给定一个整数数组 asteroids,表示在同一行的行星。对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/asteroid-collision著作权归.
2022-03-30 22:27:50
115
原创 天梯赛 L1-079 天梯赛的善良(c语言)
天梯赛是个善良的比赛。善良的命题组希望将题目难度控制在一个范围内,使得每个参赛的学生都有能做出来的题目,并且最厉害的学生也要非常努力才有可能得到高分。于是命题组首先将编程能力划分成了 106 个等级(太疯狂了,这是假的),然后调查了每个参赛学生的编程能力。现在请你写个程序找出所有参赛学生的最小和最大能力值,给命题组作为出题的参考。输入格式:输入在第一行中给出一个正整数 N(≤2×104),即参赛学生的总数。随后一行给出 N 个不超过 106 的正整数,是参赛学生的能力值。输出格式:第一行
2022-03-23 10:50:13
332
原创 PTA-L1-078吉老师的回归
曾经在天梯赛大杀四方的吉老师决定回归天梯赛赛场啦!为了简化题目,我们不妨假设天梯赛的每道题目可以用一个不超过 500 的、只包括可打印符号的字符串描述出来,如:Problem A: Print "Hello world!"。众所周知,吉老师的竞赛水平非常高超,你可以认为他每道题目都会做(事实上也是……)。因此,吉老师会按照顺序看题并做题。但吉老师水平太高了,所以签到题他就懒得做了(浪费时间),具体来说,假如题目的字符串里有qiandao或者easy(区分大小写)的话,吉老师看完题目就会跳过这道...
2022-03-22 22:42:35
121
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人