- 博客(23)
- 收藏
- 关注
原创 C语言栈和队列的实现
struct Stack{ int data; struct Stack* next;};struct Stack* createStack(){ struct Stack* stack = (struct Stack*)malloc(sizeof(struct Stack)); stack->next = NULL; return stack;}bool isEmpty(struct Stack* stack){ return (stack->next == NU
2021-01-23 15:32:56 215
原创 力扣121.买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。#define MAX(x, y) ((x) > (y)) ? (x) : (y)int maxProfit(int* prices, int pricesSize){ if(pricesSize==0) { return 0; } int dp[pr
2020-12-05 19:31:57 114
原创 力扣787.K 站中转内最便宜的航班
有 n 个城市通过 m 个航班连接。每个航班都从城市 u 开始,以价格 w 抵达 v。现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到从 src 到 dst 最多经过 k 站中转的最便宜的价格。 如果没有这样的路线,则输出 -1。#define MIN(x, y) ((x) < (y)) ? (x) : (y)int findCheapestPrice(int n, int** flights, int flightsSize, int* flightsColSi
2020-12-05 18:42:50 186
原创 力扣978.最长湍流子数组
当 A 的子数组 A[i], A[i+1], …, A[j] 满足下列条件时,我们称其为湍流子数组:若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1];或 若 i <= k < j,当 k 为偶数时,A[k] > A[k+1] ,且当 k 为奇数时, A[k] < A[k+1]。也就是说,如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是湍流子数组。返回 A 的最大湍流子数
2020-12-04 18:24:04 124
原创 力扣474.一和零
给你一个二进制字符串数组 strs 和两个整数 m 和 n 。请你找出并返回 strs 的最大子集的大小,该子集中 最多 有 m 个 0 和 n 个 1 。如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。。#define MAX(x, y) ((x) > (y)) ? (x) : (y)int findMaxForm(char ** strs, int strsSize, int m, int n){ int i,j,k; int dp[strsS
2020-12-01 15:35:47 328 1
原创 01背包问题
有n 个物品,它们有各自的重量和价值,现有给定容量的背包,输出最大价值。int main(){ int n;//物品数量 double m;//背包限制 int i,j; int tem[n][m]; struct item { double w; double v; }it[n]; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { if(j<it[i]->w) { tem[i][j] = t
2020-11-27 22:44:23 74
原创 力扣:最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。int lengthOfLIS(int* nums, int numsSize){ if(numsSize==0) { return 0; } int i,j,max=1; int dp[numsSize]; for(i=0;i<numsSize;i++) { dp[i]=1; } for(i=1;i<numsSize;i++)
2020-11-27 21:49:35 211
原创 对txt文档英文词频统计
#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct ku{ char word[1000000]; int num; struct ku*next;}ku;int read(struct ku*tem1,FILE*fp){ int ch,i=0; while((ch=getc(fp))!=EOF) {
2020-11-19 21:58:25 261
原创 二叉搜索树中删除、搜索和插入
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */struct TreeNode* searchBST(struct TreeNode* root, int val){ while(root != NULL) { if(va
2020-11-14 23:18:47 77
原创 二叉树的前序、中序、后序和层序遍历
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }TreeNode; *//** * Note: The returned array must be malloced, assume caller calls free(). */int* preorderT
2020-11-12 17:46:48 75
原创 有效的括号字符串
struct Check{ char item; int num; struct Check* left; struct Check* star;}Check;int popleft(struct Check* check){ struct Check* tem3 = (struct Check*)malloc(sizeof(struct Check)); tem3 = check->left; check->left = tem3->
2020-11-05 19:20:56 86
原创 包含min函数的栈
typedef struct MinStack{ int data; int min; struct MinStack* next;} MinStack;/** initialize your data structure here. */MinStack* minStackCreate() { struct MinStack* obj = (struct MinStack*)malloc(sizeof(struct MinStack)); obj-&g
2020-11-04 19:31:39 140
原创 逆波兰表达式求值
struct Stack{ int data; struct Stack* next;};void push(struct Stack* stack,int item){ struct Stack* tem1 = (struct Stack*)malloc(sizeof(struct Stack)); tem1->data = item; tem1->next = stack->next; stack->next = tem1;}
2020-11-03 21:10:11 98
原创 矩阵乘法解决Fibonacci序列
#include <stdio.h>#include <stdlib.h>int Multiply(int a[2][2]) { int r[2][2]={0,0,0,0}; for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { r[i][j] = 0; for (int k = 0; k <2; k++) {
2020-10-31 09:26:28 79
原创 链表的打印 插入 删除
typedef struct node0{ int data; struct node0* next;}node;int pri(node *head){ node *i=head; while(i!=NULL) { printf("%d ",i->data); i=i->next; } printf("\n"); return 0;}int insert(node *head,int n){ node *temp1 = (node*)malloc(s
2020-10-24 10:13:41 109
原创 数组与素数
int find(int n){ int i,j,k=0; int *a =malloc(sizeof(int)*n); for(i=2;i<=n;i++) { a[i]=1; } for(i=2;i<=n;i++) { if(a[i]) { for(j=i;j*i<=n;j++) { a[i*j]=0; } } } for(i=2;i<=n;i++) { if(a[i]) { printf("%4d",i
2020-10-21 19:58:38 237 1
原创 合并两个有序链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){ if(l1==NULL) { return l2; } if(l2==N
2020-10-20 21:51:57 69
原创 环形链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */bool hasCycle(struct ListNode *head) { struct ListNode *t =head; if(head==NULL) { return false; } for(int i=
2020-10-20 09:13:00 57
原创 约瑟夫问题
typedef struct link{ int data; struct link * next; }link;link *cycle0(int n){ link *head =(link*)malloc(sizeof(link)); head->data=1; head->next=NULL; link * cycle=head; for(int i=2;i<=n;i++) { link * body=(link*)malloc(sizeof(link))
2020-10-20 08:39:52 116 1
原创 比较含退格的字符串
bool backspaceCompare(char * S, char * T){ char *a = (char*)calloc(200, sizeof(char)), *b = (char*)calloc(200, sizeof(char)); int i,j=0,k,l=0,c,d; int l1 = strlen(S), l2 = strlen(T); for(i=0;i<l1;i++) { while(S[i]=='#')
2020-10-19 12:41:09 69
原创 素数生成数列
int fx(int x){ int result = x*x-x+41; return result;} int is_prime(int n){ int i; if(n==1||n==0) { return 0; } if(n==2||n==3) { return 1; } for(i=2;i<n-1;i++) { if(n%i==0) { return 0; } else
2020-10-17 07:44:02 221
原创 最长公共前缀
char *longestCommonPrefix(char **strs, int strsSize){ if(strsSize==0) { return ""; } char *str; int i,j = 0,num = strlen(strs[0]),n; for(i=1;i<strsSize;i++) { j = 0; while(strs[0][j]==
2020-10-15 23:11:59 63
原创 罗马数字转整数
int romanToInt(char * s){ int result = 0; while(*s) { switch(*s) { case'I': ((*(s+1)=='V')||(*(s+1)=='X')) ? (result -= 1) : (result += 1); break; cas
2020-10-14 22:06:06 57
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人