昆明网站建设 技术支持,个人网站转为企业网站,WordPress自媒体MNews,视频wordpress源码T1#xff1a;缺失的数字
题目描述;
我是敦立坤的爹#xff01;#xff01;#xff01; 一个整数集合中含有n个数字#xff0c;每个数字都在0n之间。假设0n的n1个数字中有且仅有一个数字不在该集合中#xff0c;请找出这个数字。 分析#xff1a;
这里引用一个桶的思…T1缺失的数字
题目描述;
我是敦立坤的爹 一个整数集合中含有n个数字每个数字都在0n之间。假设0n的n1个数字中有且仅有一个数字不在该集合中请找出这个数字。 分析
这里引用一个桶的思想 我们设 a [ x ] a[x] a[x]表示数字x是否出现过
这个时候下标x不再是一个寻常数组的编号而是一个“值” 里面存放的是数值为x的数字的有关信息比如是否出现过出现过几次等等
利用这种思路就可以解决这道题 Code
#includebits/stdc.h
using namespace std;int a[10100];int main(){int x;cinx;for (int i 0,y; i x; i)ciny , a[y] 1;//出现了一个数字y就标记一下 for (int i 0; i x; i)if (!a[i]) couti;//如果当前数字没出现过就输出 return 0;
}T2查找最长单词
题目分析
在进行文章重复度检查时经常需要统计一段英文中的单词数量并找出长度最长的单词。 分析
以空格为分隔找出单词即可。 并求出长度最长的单词 注意需要在字符串后面加上一个空格确保能取出最后一个单词 Code
#includebits/stdc.h
using namespace std;string s;
int Max 0;
string Maxx ;
int num 0;int main(){getline(cin,s);s ;//加空格 string now ;for (int i 0 ; i s.size(); i)if (s[i] ){num;//出现次数加一 if (Max now.size()) Max now.size() , Maxx now;//纪录最大 now ;} else nows[i];//加上 coutnum Max Maxx;return 0;
}T3到底买不买
题目描述
太长了不管了 分析
我们假设想要的串是要的串 商家的串是给的串 首先借用桶的思想利用map关于map这里有统计出给的串中每一个字符出现的个数 M [ c ] M[c] M[c]表示字符c出现的次数 然后遍历要的串假设当前遍历到的字符为 c c c 如果这个时候 M [ c ] M[c] M[c]不为0说明这个时候给的串里面还有多的 c c c那么就让 M [ c ] − − M[c]-- M[c]−−然后继续遍历匹配 如果这个时候 M [ c ] 0 M[c]0 M[c]0说明当前给的串里面已经没有当前字符了那么就不符合并且缺少的个数加一
如果合法那就输出两个字符串的长度差 不合法就输出个数 这样就ok了 Code
#includebits/stdc.h
using namespace std;map char , int M;
string s1,s2;int main(){cins1s2;for (int i 0; i s1.size(); i)M[s1[i]];//给的串里统计个数bool f 1;int cnt 0;for (int i 0; i s2.size(); i){if (M[s2[i]]!0) M[s2[i]]--;else f 0,cnt;//不可以个数加1}if (f) coutYes s1.size()-s2.size();else coutNo cnt;return 0;
} T4
逆波兰式运算规则
不想手写于是就嫖了 没有思想难度只是模拟这个过程 而且这道题里面不存在于是过程更加简单
什么是栈 栈是一个满足先进后出的一个数据结构 最先进去的元素被压入栈底 新进去的元素就是栈顶 我们的操作只能对栈顶进行操作 1、出栈就是弹出栈顶元素并输出 2、入栈在栈顶新加入一个数
其实用数组也可以模拟这个过程 关于更加详尽的栈的描述可以取搜索其他博客 这里就不再赘述 Code
#includebits/stdc.h
using namespace std;string s;
map char , int M;
stack char st;int main(){M[] 0 , M[-] 0 , M[*] 1 , M[/] 1;cins;for (int i 0; i s.size(); i){if (s[i]a s[i]z) {couts[i];continue;}if (st.size() 0) {st.push(s[i]);continue;}while (st.size() M[s[i]] M[st.top()]) coutst.top(),st.pop();st.push(s[i]);}while (st.size()) coutst.top(),st.pop();return 0;
}