刷题
文章平均质量分 50
刷题内容
影中人lx
经管跑路人
展开
-
【前缀和和差分】
前缀和、差分原创 2022-07-15 19:00:46 · 142 阅读 · 0 评论 -
【刷题】BFS题目精选
BFS刷题原创 2022-07-04 22:42:29 · 1046 阅读 · 0 评论 -
颜色分类Ⅱ
rainbosort和计数排序原创 2022-06-12 00:10:41 · 178 阅读 · 0 评论 -
每日一题【day3】——水流问题
题目链接思路BFS:对于一个点它能流动两边的大洋,那么反过来,两边大洋的水反着流就能达到这个点。尽然水开始倒流了,那么逻辑也需要反过来,因此只有将下一个点比当前的点大时或者等于当前点的高度时,水才能流过去。步骤:找出所有从太平洋出发的水所能达到的点找出所有从大西洋出发的水所能达到的点重合的点便是我们要找的点class Solution {public://dfs//反向思维:水往高处流 vector<vector<int>> P,A,R;原创 2022-05-13 13:28:07 · 152 阅读 · 2 评论 -
每日一题(day1)
题目链接方法一:使用栈进行中序遍历class Solution {public: int kthSmallest(TreeNode *root, int k) { stack<TreeNode *> ST; while (root != NULL || ST.size() > 0) { while (root != NULL) { ST.原创 2022-05-11 12:27:25 · 146 阅读 · 0 评论 -
数据结构链表题集
题目一:113 · 删除排序链表中的重复数字(二) - LintCode思路:创建哨兵位头结点,原地删除class Solution {public: /** * @param head: head is the head of the linked list * @return: head of the linked list */ //带哨兵位的删除方法 ListNode* deleteDuplicates(ListNode *hea.原创 2022-05-06 01:28:19 · 825 阅读 · 5 评论 -
动态规划(上)
题目一:109 · 数字三角形 - LintCode分治利用递归可以很快的写出程序class Solution {public: int traverse(vector<vector<int>> &triangle,int x,int y) { int n=triangle.size(); if(x==n) return 0; return triangle[x][y]+min(traver.原创 2022-05-04 00:39:48 · 185 阅读 · 10 评论 -
二叉树刷题
二叉树题目1:94 · 二叉树中的最大路径和 - LintCodeclass Solution {public: //求出从根到任意位置的最大长度 int dfs(TreeNode* root,int& maxsum) { if(root==NULL) return 0; int left=0,right=0,tmp=root->val; //如果左子树存在,求出目前结点的左子树的最大长度 if(root->left) l.原创 2022-05-01 23:32:33 · 754 阅读 · 2 评论 -
剑指offer——day4
题目1int cmp(int*a,int*b){ return *a-*b;}int findRepeatNumber(int* nums, int numsSize){ qsort(nums,numsSize,sizeof(int),cmp); for(int i=1;i<numsSize;i++) { if(nums[i]==nums[i-1]) { return nums[i]; .原创 2022-04-10 16:16:31 · 1211 阅读 · 0 评论 -
剑指offer——day3
题目1:替换空格char* replaceSpace(char* s){ int i=0; int j=0; int len = strlen(s); int cnt=0; for (i = 0; i < len; i++) { if (s[i] == ' ') { cnt++; } } char*ans =(char*)malloc(sizeof.原创 2022-04-09 15:28:42 · 916 阅读 · 0 评论 -
剑指offer——day2
题目一思路:两次遍历。一次遍历出链表的元素个数。第二次依次插入数据int* reversePrint(struct ListNode* head, int* returnSize){ int i=0; struct ListNode*cur=head; while(head) { head=head->next; i++; } *returnSize=i; int*res=(int*)malloc(siz原创 2022-04-09 01:52:43 · 170 阅读 · 0 评论 -
剑指offer——day1
题目一题目主要考察的是对栈和队列的理解和基本实现typedef int STDataType;#define DEFSTACKSIZE 100typedef struct Stack{ STDataType* array; int size; int capacity; }Stack;void CheckCapacity(Stack* ps){ if (ps->size >= ps->capacity) { ps->capacity *= 2原创 2022-04-08 20:09:50 · 234 阅读 · 0 评论 -
一篇解决背包问题
文章目录0-1背包问题完全背包问题多重背包问题一多重背包问题二0-1背包问题思路1:二维动态规划法对于状态f[i] [j]定义为前i给物品下,背包重量为j的最优解:当前的状态依赖于之前的状态,那么初始的状态f[0] [0]==0开始决策。有n个物品,则需要N种决策,每一次对第i件物品的决策,状态f[i] [j]不断由之前的状态跟新而来。对于第i件物品时,如果空间的容量不够, 那么f[i] [j]==f[i-1] [j]如果背包的容量够用,那么就有两种情况:如果选择了第i件原创 2022-04-01 17:38:13 · 417 阅读 · 3 评论 -
《初级算法》——(一)
题目一:思路一:动态规划定义dp[i][0]表示第i+1天交易完之后手里没有股票的最大利润,dp[i][1]表示第i+1天交易完之后手里持有股票的最大利润。当天交易完之后手里没有股票可能有两种情况,一种是当天没有进行任交易,又因为当天手里没有股票,所以当天没有股票的利润只能取前一天手没有股票的利润。一种是把当天手里的股票给卖了,既然能卖,说明手里是股票的,所以这个时候当天没有股票的利润要取前一天手里有股票的利润加天股票能卖的价格。这两种情况我们取利润最大的即可,所以可以得到dp[i][0]=m原创 2022-03-23 21:04:30 · 1481 阅读 · 0 评论 -
数据结构——链表练习题
题目一:思路:双指针当listA和listB其中一个位空时,两个列表就不存在相交,返回NULL;当listA和listB都不为空链表时,指针phead1和phead2同时分别遍历listA和listB。遍历完后,再去分别遍历listB和listA,相等时为相交节点。struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB){ struct ListNode*phead1=he原创 2022-03-19 17:38:59 · 1524 阅读 · 1 评论 -
leetcode刷题——多维枚举(一)
题目一:思路:双指针bool isSubsequence(char * s, char * t){ int fast=0; int slow=0; while(slow<strlen(s)&&fast<strlen(t)) { if(s[slow]==t[fast]) { slow++; } fast++; } return slow==原创 2022-03-17 00:09:34 · 7189 阅读 · 0 评论 -
leetcode刷题——概率与统计(二)
题目一:题目链接规则:1. 爱丽丝可以从牌面为 [1,maxPts] 的牌中选择任意一张,这张牌是可以无限重复的。2.如果她手上牌的总额小于 K,她就会抽牌,大于等于 K 时,就停止抽牌;3.停止抽牌后,她的牌面小于等于 N 时,她就获胜了,求她获胜的概率。假设 dp[x] 为爱丽丝手上牌面为x时,能获胜的概率,那么这个概dp[x]=(1/maxPts) * (dp[x+1]+dp[x+2]+dp[x+3]…+dp[x+maxPts])x分2种情况:1.当x>=K时,爱丽丝原创 2022-03-16 22:33:49 · 449 阅读 · 0 评论 -
拒绝采样例题
这个思路简直绝了原创 2022-03-15 01:25:22 · 218 阅读 · 2 评论 -
leetcode刷题(四)——概率论与数理统计(一)
leetcode刷题系列四,主要的内容涉及概率论和数理统计的知识例题算法分析int dp[12][70];double* dicesProbability(int n, int* returnSize){ int i, j, k; double f; double *ret = (double *)malloc( sizeof(double) * (n * 6 + 1) ); memset(dp, 0, sizeof(dp)); .原创 2022-03-12 22:51:40 · 809 阅读 · 10 评论 -
leetcode刷题(三)——容斥原理
leetcode刷题系列三。这一节的内容主要是容斥原理的题目和题解。百度百科上容斥原理的解释:在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理公式两个集合的容斥关系公式:A∪B =|A∪B| = |A|+|B| - |A∩B |(∩:重合的部分)三个集合的容斥..原创 2022-03-12 20:13:42 · 1068 阅读 · 0 评论 -
leetcode刷题(二)
题目一题目链接void reverse(int* arr,int left,int right){ while(left<right) { int tmp=arr[left]; arr[left]=arr[right]; arr[right]=tmp; left++; right--; } return arr;}void rotate(int* nums, int numsS.原创 2022-03-08 22:44:49 · 342 阅读 · 0 评论 -
帕斯卡三角形
题目链接int** generate(int numRows, int* returnSize, int** returnColumnSizes){ int** ans=malloc(sizeof(int*) * numRows); //开辟一块内存空间,用来返回ans,大小是numRows个int*型 int i=0; *returnSize=numRows; //*returnSize即返回数组的数据元素个数是numRows个 *returnColumn...原创 2022-03-08 00:31:04 · 178 阅读 · 0 评论 -
数据结构刷题(一)
题目链接方法一:迭代struct ListNode* removeElements(struct ListNode* head, int val){ if(head==NULL) return head; head->next=removeElements(head->next,val); return head->val==val?head->next:head;}方法二:遍历struct ListNode* r..原创 2022-03-07 22:57:22 · 260 阅读 · 0 评论 -
跟着英雄刷算法-因式分解和枚举
补上前天落下的。题目一:intkthFactor(intn,intk){intcnt=0;for(inti=1;i<=n;i++){if(n%i==0){k--;if(0==k){returni;}}}return-1;}题目二...原创 2021-11-01 01:03:56 · 94 阅读 · 0 评论 -
跟着英雄刷算法-因子和
题目:解法一:对于情况(1),因子为1和本身以及p,q;它的因子和为1+p+q+pq=(p+1)*(q+1)对于情况2,因子为p,p的平方和1和本身。它的因子和为1+p^3+p^2+p=(p^4-1)/(p-1)boolf[100001];intprimes[10001];voidethPrime(){inti;longlongj;f[0]=...原创 2021-11-01 14:57:13 · 87 阅读 · 0 评论 -
跟着英雄刷算法-算术基本定理
补上前两天欠下的题。题目一:bool checkPerfectNumber(int num){ int i=0,sum=0; for(i=1;i<=sqrt(num);i++) { if(num%i==0) { sum+=i; if(i!=sqrt(num)) { sum+=num/i; }原创 2021-11-01 00:25:05 · 94 阅读 · 0 评论 -
《算法零基础100讲》 最值算法
题目1:题目链接int findMaxConsecutiveOnes(int* nums, int numsSize){ int cnt=0; int max=0; for(int i=0;i<numsSize;i++) { if(nums[i]==1) { cnt++; max=cnt>max?cnt:max; } else .原创 2022-02-25 01:10:25 · 612 阅读 · 0 评论 -
《算法零基础100讲》 变量交换算法
题目1题目链接int* swapNumbers(int* numbers, int numbersSize, int* returnSize){ numbers[0]=numbers[0]^numbers[1]; numbers[1]=numbers[0]^numbers[1]; numbers[0]=numbers[0]^numbers[1]; *returnSize=2; return numbers;}题目2题目链接int exchangeBits(int num){.原创 2022-02-25 00:03:50 · 571 阅读 · 0 评论 -
跟着英雄刷算法-日期计算
引例闰年:bool isleapyear(int year){ return (year%4==0&&year%400!==0)||(year%400==0);}例一:bool isleapyear(int year){ return (year%4==0&&year%400!=0)||(year%400==0);}int strtoint(char*str,int len){ int i=0; in..原创 2021-10-28 03:09:30 · 266 阅读 · 0 评论 -
素数筛选-埃氏筛
intcountPrimes(intn){if(n<2){return0;}intisPrime[n];memset(isPrime,0,sizeof(isPrime));//初始化数组intcount=0;for(inti=2;i<n;++i){if(!isPrime[i]){...原创 2021-10-29 20:57:44 · 88 阅读 · 0 评论 -
跟着英雄刷算法-素数
跟着英雄大佬刷算法的第三天.......每天这些题都要想、查好久。数论基础优化一:对于一个非素数n来说,如果x是n的一个因子。那么n/x也是n的一个因子,我们可以假设x所以对于一个数n,判断它是否为一个素数我们需要确定的范围为【2,根号下n】。优化二:例1://不是素数返回0bool isprime(int n){ if(n<2) return false; if(n>=2) { int num=..原创 2021-10-29 00:23:34 · 106 阅读 · 0 评论 -
跟着英雄刷算法-计数法
博主是一个刚刚学校C语言和算法的小白,算法这一块完全是空白。偶然了解到了英雄大佬和万人社区。以后博主有时间会分享跟着英雄大佬学习到的东西和平时练习。引例1.IQ测试:iq表示统计智商的数据列表,然后统计智商大于k的人数。int func(int*iq,int size)//size表示一共有多少数据{ int i=0; int count=0; for(i=0;i<size;i++) { if(iq[i]>k);//k为想要统原创 2021-10-27 18:44:37 · 208 阅读 · 2 评论 -
C语言笔记—循环入门题型和猜数游戏
一、对三个数进行排序方法一:函数#include<stdio.h>int MAX(int a,int b){ int max=a>b?a:b; return max;}int MIN(int a,int b){ int min=a<b?a:b; return min;}int main(){ int a=0,b=0,c=0; scanf("%d %d %d",&a,&b,&c); ..原创 2021-10-30 17:55:29 · 2457 阅读 · 5 评论