
数据结构与算法
Daniel_Alan
欲戴王冠,必承其重
展开
-
合并K个升序链表(时间复杂度击败100%)
使用优先队列,按照value值进行排序,就是在每个链表都有一个头指针,头指针指向的结点被排好序后,头指针后移,由于队列中每进入一个结点都要排一次序列,所以效率很低,不建议用。输入:lists = [[1,4,5],[1,3,4],[2,6]]请你将所有链表合并到一个升序链表中,返回合并后的链表。lists[i].length 的总和不超过 10^4。给你一个链表数组,每个链表都已经按升序排列。输出:[1,1,2,3,4,4,5,6]输入:lists = [[]]输入:lists = []原创 2022-10-17 20:28:59 · 296 阅读 · 0 评论 -
小码哥考研技巧(求背单词长度的最大期望)
求期望利用动态数组排序,原创 2022-10-14 18:56:16 · 1099 阅读 · 4 评论 -
海难(有n个人在一艘海上航行的船上Java循环链表解)
海难有n个人在一艘海上航行的船上原创 2022-10-14 10:49:56 · 406 阅读 · 0 评论 -
三数之和(双指针法)
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足原创 2022-10-13 10:30:22 · 982 阅读 · 0 评论 -
字符串转换整数
请你来实现一个 myAtoi(string s) 函数,使其能将字符原创 2022-10-04 12:13:19 · 178 阅读 · 0 评论 -
最长回文字符串
给你一个字符串 s,找到 s 中最长的回文子串原创 2022-09-26 22:20:20 · 237 阅读 · 0 评论 -
寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。原创 2022-09-26 15:55:10 · 170 阅读 · 0 评论 -
无重复字符的最长子串
leetcode:无重复字符的最长子串原创 2022-09-26 10:56:45 · 301 阅读 · 0 评论 -
东华OJ:纪念品分组
#include <bits/stdc++.h>using namespace std;//贪心算法,两头往中间靠拢 int main() { int w, n; cin>>w>>n; int a[n]; for(int i = 0; i < n; i++) scanf("%d", &a[i]); sort(a, a+n); int i = 0, j = n-1, cnt = ...原创 2022-04-05 08:28:04 · 1125 阅读 · 0 评论 -
东华OJ:完美的代价
#include<bits/stdc++.h>using namespace std;int main(){ int N; scanf("%d",&N); string s; cin >> s; int last = N - 1;//下面多次用到N-1 int step = 0; bool flag =false; //for (int i = 0; i < N; i++) //上面的也行,不过用i < last时,整体上能减少计算机...原创 2022-04-05 08:26:56 · 401 阅读 · 0 评论 -
东华OJ:排队打水问题
#include <bits/stdc++.h>using namespace std;const int N = 110;priority_queue<int, vector<int>, greater<int> > q; //小根堆,队头总是为最小元素vector<int> a[N]; int main(){ int n, r, sum_do = 0, sum_wait = 0; cin >> n &...原创 2022-04-05 08:25:30 · 491 阅读 · 0 评论 -
东华OJ:最小乘积
#include<bits/stdc++.h>using namespace std;//一个里面最小的和另外一个里面最大的相乘 bool cmp(int a,int b){ return a>b;}int main(){ int i,t,n,a[10],b[10],sum=0; scanf("%d",&t); while(t--) { cin>>n; for(int i=0;i<n;i++) cin>>a[i];...原创 2022-04-05 08:24:31 · 269 阅读 · 0 评论 -
东华OJ:铺地毯
#include <iostream>using namespace std;const int maxn=1e5+50;int n,a[maxn],b[maxn],g[maxn],k[maxn],x,y,ans=-1;//先找到目标点(x,y)再铺地毯,若覆盖了这个点,就更新地毯编号。//每块地毯的范围: a<=x<=a+g , b<=y<=b+k//上述思路理解很重要int main(){ scanf("%d",&n); ...原创 2022-04-05 08:23:24 · 312 阅读 · 0 评论 -
东华OJ:班级排名
#include<bits/stdc++.h>using namespace std;struct S{ char name[35]; int score;}stu[105],add[105];//注意总分排名 int namecmp(S a,S b) //按名字先后排序 { return strcmp(a.name,b.name)>0?1:0;}int cmp(S a,S b) //按总分排序 { if(a.score!=b.score) ret...原创 2022-04-05 08:22:26 · 317 阅读 · 0 评论 -
东华大学OJ:新生舞会
#include<bits/stdc++.h>using namespace std;#define max 1000+2#define len 20+2struct { char name[len]; char num[len]; char sex;}student[max];char gex_Sex(char info[]){ for(int i=0;;i++) { if(!strcmp(info,student[i].nam...原创 2022-04-04 06:56:25 · 648 阅读 · 0 评论 -
东华大学OJ:回文数
#include<bits/stdc++.h>using namespace std;int main(){ int n; char m[100]; scanf("%d",&n); getchar(); gets(m); //对读入的数据进行综合处理 int k=strlen(m); int a[100]; for(int i=0;i<k;i++){ if(m[i]>='0'&&m[i]<='9') a[i]=m...原创 2022-04-04 06:55:25 · 349 阅读 · 0 评论 -
东华大学OJ:身份证排序
#include <bits/stdc++.h>using namespace std;int cmp(string a, string b) { //一共有8位 string suba = a.substr(6, 8); string subb = b.substr(6, 8); if(suba != subb) return suba > subb; else return a > b;}in...原创 2022-04-04 06:53:39 · 367 阅读 · 0 评论 -
东华大学复试题:S01串
#include<bits/stdc++.h>using namespace std;int main(){ int n; char a[20][10000]={'0'}; cin>>n; for(int i=1;i<=n;i++) { int k=0; for(int j=0;j<strlen(a[i-1]);j++) { if(a[i-1][j]=='0') a[i][k++]='1'; else { ...原创 2022-04-04 06:51:44 · 231 阅读 · 0 评论 -
东华大学复试题:扫雷
#include<iostream>using namespace std;const int maxn=105;//思路问题 int main(){ int n,m; char MS[maxn][maxn]; int cnt=1; while(scanf("%d %d",&n,&m)!=EOF&&n!=0&&m!=0) { int ans[maxn][maxn]={0}; ...原创 2022-04-04 06:50:34 · 312 阅读 · 0 评论 -
东华大学复试题:分糖果
#include<iostream>#include<cstdio>using namespace std;int main(){ int n; cin>>n; int arr[n],brr[n]; int f=1,count=0; for(int i=0;i<n;i++) cin>>arr[i]; while(f){ for (int i = 0; i < n; i++) { brr[i] = arr[i...原创 2022-04-04 06:45:45 · 373 阅读 · 0 评论 -
东华复试题:翻硬币
#include<iostream>#include<cstring>using namespace std;int main(){ char a[1005],b[1005]; int c[1005]; int ans = 0; cin>>a; cin>>b; int n = strlen(a); for(int i = 0;i < n;++i) { if(a[i] == b[i]) { c[i] = ...原创 2022-04-04 06:44:43 · 192 阅读 · 0 评论 -
东华复试题:连续正整数的和
#include<bits/stdc++.h>using namespace std;int main(){ int n,i,j,k,sum; cin>>n; for(i=1;i<=n/2;i++){ sum=i; for(j=i+1;j<=n;j++){ sum+=j; if(n==sum){ printf("%d %d\n",i,j); break; } } } return 0;}原创 2022-04-04 06:43:05 · 130 阅读 · 0 评论 -
东华复试题:约瑟夫环
#include<stdio.h>#include<stdlib.h>typedef struct node{ int data; struct node *next;}LinkList,*LinkNode;LinkList *Init(LinkList *L,int n){ LinkNode r,s; L=(LinkList*)malloc(sizeof(LinkList)); L->next=L; L-&...原创 2022-04-03 06:30:03 · 328 阅读 · 0 评论 -
东华复试题:暗恋
#include<bits/stdc++.h>using namespace std;#define MAX 1005int p[MAX][MAX];int check(int a,int b,int ans){ int temp=p[a][b]; for(int i=0;i<ans;i++) for(int j=0;j<ans;j++){ if(p[a+i][b+j]!=temp)return 0; } retu...原创 2022-04-03 06:28:58 · 263 阅读 · 0 评论 -
东华复试题:质数的乘积
#include<iostream>#include<cstdio>#include<cmath>using namespace std;int zhishu(int n){ if(n==2) return 1; if(n==1) return 0; for(int i=2;i<=sqrt(n);i++){ if(n%i==0) return 0; } return 1;}int main(){ int n,cnt=0; long...原创 2022-04-03 06:27:26 · 168 阅读 · 0 评论 -
东华复试题:数字黑洞
#include<bits/stdc++.h>using namespace std;//sort函数的改写,累计次数变换 bool cmp(int a, int b){ return a > b;}int main(){ char num[5]; int n, cnt = 0; scanf("%d", &n); do{ for(int i=0;i<4;i++){ num[i] = n % 10 +'0'; n /= 10; }...原创 2022-04-03 06:26:13 · 164 阅读 · 0 评论 -
东华复试:数的统计
#include<stdio.h>int main(){int a[1005]={0};int n,mx=0;scanf("%d",&n);for(int i=0;i<n;i++){int b;scanf("%d",&b);a[b]++;//主要是控制数量if(b>mx)m...原创 2022-04-03 06:25:11 · 178 阅读 · 0 评论 -
东华复试题:区间k大数查询
#include<iostream>#include<cstdio>#include<bits/stdc++.h>#include<algorithm>using namespace std;int cmp(int m,int n){ return m>n;}int main(){ int n,m; cin>>n; int a[n]; for(int i=0;i<n;i++){ cin>&...原创 2022-04-03 06:24:19 · 212 阅读 · 0 评论 -
东华复试题:孪生素数
#include<iostream>#include<cstdio>#include<cmath> using namespace std;int zhishu(int n){ if(n==2) return 1; if(n==1) return 0; for(int i=2;i<=sqrt(n);i++){ if(n%i==0) return 0; } return 1;}int main(){ int n,t; for(...原创 2022-04-03 06:23:04 · 351 阅读 · 0 评论 -
东华复试题:数列
#include<iostream>using namespace std;int main(){ int k,n,i,j,count,num,temp; cin>>k>>n; //a=(int *)malloc(sizeof(int)*n); int a[n]; count=0;//表示项数 num=1; //求第n项,两层循环控制 while(count<n){ temp=count; a[count++]=num; ...原创 2022-04-03 06:21:31 · 158 阅读 · 0 评论 -
东华复试题:谁是老二?
一维数组中存储不超过100个整型数据,请找出其中第二大的元素,输出这些元素的值以及它们的下标。注意,由于元素值可能相同,因此具有最大值的元素个数可能不只一个,第二大的元素是比它们小的那些元素。#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int cmp(int a,int b){ if(a>b) return 1; else return 0;原创 2022-04-03 06:19:44 · 269 阅读 · 0 评论 -
c++中的vector
通过 vector<int> v 来定义一个储存整数的空的 vector。当然 vector 可以存任何类型的数据, 比如 vector<string>v 等等常用函数为1.push_back 在数组的最后添加一个数据2.pop_back 去掉数组的最后一个数据3.at 得到编号位置的数据4.begin 得到数组头的指针5.end 得到数组的最后一个单元+1的指针6.front 得到数组头的引用7.back 得到数组的最后一个单元的引用8.max.原创 2022-03-25 13:23:11 · 185 阅读 · 0 评论 -
代码可能溢出情况
一:极端情况溢出:int mid=(right+left)/2改良:int mid=left+(right-left)/2原创 2022-03-16 20:00:00 · 488 阅读 · 0 评论 -
117 混合牛奶
问题描述 :牛奶包装是一个如此低利润的生意,所以尽可能低的控制初级产品(牛奶)的价格变得十分重要。请帮助快乐的牛奶制造者(Merry Milk Makers)以可能的最廉价的方式取得他们所需的牛奶。快乐的牛奶制造公司从一些农民那购买牛奶,每个农民卖给牛奶制造公司的价格不一定相同。而且,如一头母牛一天只能生产一定量的牛奶,农民每一天只有一定量的牛奶可以卖。每天,快乐的牛奶制造者从每个农民那购买一定量的牛奶,少于或等于农民所能提供的最大值。给出快乐牛奶制造者的每日的牛奶需求,连同每个农民的可提供的牛奶量和每原创 2022-03-16 14:18:47 · 115 阅读 · 0 评论 -
115 摩托车
问题描述 :明明是一家摩托车厂的老板,他的厂为了迎合市场中不同消费者的需求,会生产不同型号的摩托车,这为明明的厂带来了不小的收益。有一次,一位大客户来到明明的厂洽谈生意,他需要采购一批型号各不相同的摩托车,然后他把需要的摩托车的型号告诉了明明,接着明明就需要在他所生产的摩托车中寻找到型号匹配的,如果有则卖给那个客户,如果没有则只能对客户说抱歉了。明明忙了一个上午,终于把那个客户需要的摩托车全部配齐了,然后成功的谈成了这笔生意。 事后,明明发现了一个问题,如果每个客户来,都需要这样忙一个上午,才能够知道自原创 2022-03-16 12:22:43 · 427 阅读 · 0 评论 -
114 成绩统计
每次通过键盘输入5位学生如下表所示的数据,然后计算并输出每位学生的平均成绩,再输出数学成绩最高的学生的姓名及成绩。输出说明 :首先输出5行,每行包括学生的姓名和平均成绩,平均成绩为数学成绩加政治成绩整除2(即丢掉小数部分)。第6行为数学成绩最高的学生的姓名及成绩。输入范例 :John 88 89Jack 80 86Marry 76 80Kite 55 58Jane 56 68输出范例 :John 88Jack 83Marry 78Kite 56Jane 6原创 2022-03-16 11:14:23 · 215 阅读 · 0 评论 -
113 学生信息
问题描述 :你的程序需要从标准输入设备(通常为键盘)中输入N(1≤N≤10)个学生的信息,每项信息包含该学生的编号、姓名、性别、年龄、成绩共五项,按成绩进行排序,然后按成绩从低到高输出,输入保证没有相同的成绩。输入说明 :首先输入一个N(1≤N≤10),代表有几条学生记录,接下来N行每行包含一条学生记录,按照编号、姓名、性别、年龄、成绩的顺序给出,数据项之间以空格分隔,除了这五项之间的4个空格外,无其他空格。所有数据前后没有多余的空行,两个学生的记录之间也没有多余的空行。输出说明 :你的原创 2022-03-16 10:39:51 · 366 阅读 · 0 评论 -
112 密码分析
问题描述 :密码分析学中常常需要统计字符出现的频度。给定若干行短文,要求按字符出现的频度由高到低输出,当两个字符出现的频度相同时,按字符大小的顺序输出。注意:只需要统计英文字母的频度,非英文字母一律忽略。输入说明 :输入由多组数据组成。每组数据由一行长度不超过100的字符串组成,不区分字母大小写,如A与a看作同一个字母。输出说明 :对每组输入数据都有若干行输出,每行有两个输出数据,第一个数据为某个大写字母,第二个数据为该字母出现的频度,两个数据之间有一个空格。输出顺序按字母出现的频度原创 2022-03-16 09:55:06 · 309 阅读 · 0 评论 -
111 统计候选人的票数
问题描述 :设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个得票的候选人的名字,若选民输错候选人姓名,则按废票处理。选民投票结束后,程序自动显示各候选人的得票结果和废票信息。要求用结构体数组candidate表示3个候选人的姓名和得票结果。输入说明 :输入十行,每行表示一个选民的投票,每行包含一个候选人姓名。若选民输错候选人姓名,则按废票处理。输出说明 :选民投票结束后,程序自动显示各候选人的得票结果和废票信息。每行输出“姓名: 票数”原创 2022-03-15 18:09:46 · 370 阅读 · 0 评论 -
102 翻译字符串
问题描述 :在现代战争中,情报战越来越显示出它的重要性,敌我双方都想方设法得到对方的情报,然后一举歼灭对方。然而,随着加密技术的出现,对情报进行加密变得越来越频繁,想破解敌方的情报也越来越难。明明是一名富有经验的情报工作人员,他的主要任务就是破解敌方的情报,从而得到对己方有利的信息。在一次破解情报任务中,明明再次成功地破解了敌方的情报。明明的破解方法如下:一串以‘@’为结束标志的字符串,从左至右对其进行翻译,若字符串中当前字符是整数n(0≤n≤9),则表示将后一个字符重复n+1次,不论后一个字符是否为数原创 2022-03-12 12:19:36 · 207 阅读 · 0 评论