当前位置: 首页 > wzjs >正文

网站建设技术总结电商排行榜10强

网站建设技术总结,电商排行榜10强,上海传媒公司在哪个区多,做外贸的人如何上国外网站目录 OR63 删除公共字符题目解析代码 JZ52 两个链表的第一个公共结点题目解析代码方法一方法二 mari和shiny题目解析代码 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒 个人主页 🥸🥸&#…

目录

  • OR63 删除公共字符
    • 题目解析
      • 代码
  • JZ52 两个链表的第一个公共结点
    • 题目解析
      • 代码
        • 方法一
        • 方法二
  • mari和shiny
    • 题目解析
      • 代码

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
🥸🥸🥸 C语言
🐿️🐿️🐿️ C语言例题
🐣🐣🐣 python
🐓🐓🐓 数据结构C语言
🐔🐔🐔 C++
🐿️🐿️🐿️ 文章链接目录
🏀🏀🏀 笔试练习题

OR63 删除公共字符

链接
在这里插入图片描述

题目解析

主要这里是删除的字符,其中包含的标点符号,之前我以为只删除字母,导致创建的数组大小为26

这道题用的是哈希,我们通过ASCLL码值与数组下标的对应关系去做

代码

#include <iostream>
using namespace std;int main() {string s1,s2;bool hash[300]={0};
getline(cin,s1);
getline(cin,s2);
for(char ch:s2)hash[ch]=true;
for(auto ch:s1)
{if(!hash[ch])cout<<ch;
}
return 0;
}

getline函数是因为输入的字符中可能会有空格,我们要将空格读入字符串中,所以要用getline
for(char ch:s2)hash[ch]=true就是通过hash数组下标与ASCLL码值的对应关系,将数组的元素改为true
if(!hash[ch])cout<<ch,因为不是返回字符串,所以我们只需要将s1中没有在s2出现的字符打印出来就行了

JZ52 两个链表的第一个公共结点

链接
在这里插入图片描述

题目解析

注意题目描述的是返回传入的pHead1和pHead2的第一个公共结点,所以当他们的后面结点的长度都相当的时候只需要找到一个节点数值相同的就可以返回了
方法一:通过计数的方式
在这里插入图片描述
首先我们先遍历一遍链表,将所有的结点个数记下,然后用for循环遍历,for循环的次数为count1-count2的绝对值,因为我们从题目中可以知道,如果有公共结点,那么后面的所有结点都是一样的,且个数也都是一样的,所以在for循环当中我们是不需要判断p1和p2的值是否一样的

当for循环结束后我们就可以用while循环去找公共结点

方法二:方法二是找到他们之间的等量关系
在这里插入图片描述
我们假设他们的公共长度为x,其他的长度分别为x1和x2,那么他们会有这样一个关系式
x1+x+x2=x2+x+x1
虽然只是交换了位置,但是我们可以理解成cur1从x1的位置走到他们两个的交点
在这里插入图片描述
然后走完公共路程
在这里插入图片描述
之后又跳到cur2开始的位置再走
在这里插入图片描述
此时我们所走的路程为x1+x,还有x2的路程没有走
同样的cur2走x2的路程到公共交点
在这里插入图片描述
然后走完公共路程到cur1的位置
在这里插入图片描述
此时所走的路程为x2+x,还有x1的路程没有走
因为他们所走的总路程都是一样的,所以说明他们走完所花的时间也是相同的,那么就说明他们会在走完后相遇,而相遇的位置就是他们的公共交点
也就是说cur1走完后去走cur2,cur2走完后去走cur1,一直这样走直到他们相遇,而此时的位置就是公共交点,没有公共结点的情况也是可以解决的,因为他们走完所以路程是一定会相遇的,如果没有相遇那么就是没有公共结点,所以就返回空

代码

方法一
class Solution {
public:ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {ListNode *p1=pHead1;ListNode *p2=pHead2;int count1=0,count2=0;if(p1==nullptr||p2==nullptr)return nullptr;while(p1!=nullptr){count1++;p1=p1->next;}while(p2!=nullptr){count2++;p2=p2->next;}p1=pHead1;p2=pHead2;ListNode *ptr=nullptr;if(count1>count2){for(int i=1;i<=count1-count2;i++)p1=p1->next;}else if(count1<count2){for(int i=1;i<=count2-count1;i++)p2=p2->next;}int count=min(count1,count2);for(int i=1;i<=count;i++){if(p1->val==p2->val){ptr=p1;break;}else {ptr=nullptr;p1=p1->next;p2=p2->next;}}return ptr;}
};
方法二
class Solution {public:ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {ListNode* p1 = pHead1;ListNode* p2 = pHead2;while (p1 != p2) {p1 = (p1 == NULL ? pHead2 : p1->next);p2 = (p2 == NULL ? pHead1 : p2->next);}return p1;}
};

mari和shiny

链接
在这里插入图片描述

题目解析

这道题不可以用排列组合的公式去做,应该需要考虑s h y的先后顺序,当时我以为只需要得到s h y的个数然后相乘就可以得出结果了,结果是错误的

这道题用动态规划去做,并且这是多状态的线性dp
比如我们先固定一个y,然后需要往前找有多少个sh,当y的位置是i的时候,那么要找的就是o到i-1的位置有多少个sh
在这里插入图片描述
同样的当i位置为h的时候,我们需要知道o到i-1位置上有多少个s
在这里插入图片描述
最后我们还需要推出o-i位置有多少个shy

状态表示如图
在这里插入图片描述
状态转移方程推导如下
先说s[i]
s[i]需要分两种情况,当str[i],也就是字符串i位置的字符,当他的字符为s的时候,那么公式就是s[i-1]+1
反之就是s[i-1]
在这里插入图片描述
对于h[i],他依然分两种情况
当str[i]为h的时候,我们就需要看他前面有多少个s,此外因为str[i]前面也可能有多个h,而他前面的h有多少个sh是记录在h[i]里面的,所以我们可以得出h[i]=s[i-1]+h[i-1]
如果str[i]不是h的话,那么就只需要考虑他前面有多少个sh就行了,也就是h[i-1]

在这里插入图片描述
对于y[i]也是相同的过程,这里就不说了
在这里插入图片描述
这里谈谈初始化问题
s[0]看第一个字符是否为s,h[0]因为要组成sh,而开始只有一个字符,所以为0,y[0]和y[1]也都是为0
在这里插入图片描述
这道题可以空间优化一下,和之前的滑动窗口方式差不多,用3个变量去解决问题
在这里插入图片描述

代码

#include<iostream>
#include<string>
using namespace std;
int n;
string str;
int main()
{cin>>n>>str;long long s=0,h=0,y=0;for(int i=0;i<n;i++){char ch=str[i];if(ch=='s') s++;else if(ch=='h') h+=s;else if(ch=='y') y+=h;}cout<<y<<endl;
return 0;
}

文章转载自:

http://6A6KhuxT.ryywf.cn
http://3FqyGLdm.ryywf.cn
http://RZGtYzNt.ryywf.cn
http://Zbxdt0Eu.ryywf.cn
http://dDqnvi4D.ryywf.cn
http://EUBJClJb.ryywf.cn
http://wY5kVUH0.ryywf.cn
http://WpZMWhD1.ryywf.cn
http://uq0TIXYu.ryywf.cn
http://StsvSAfO.ryywf.cn
http://HaCkluV8.ryywf.cn
http://FaHmI11t.ryywf.cn
http://p4KkUiRh.ryywf.cn
http://MJBlk2jQ.ryywf.cn
http://7cgAlQNg.ryywf.cn
http://SZ1hPG5x.ryywf.cn
http://cfpjxT75.ryywf.cn
http://liqWZut0.ryywf.cn
http://xG50iID9.ryywf.cn
http://9qZklZss.ryywf.cn
http://ImMhPDvd.ryywf.cn
http://idsjwwOY.ryywf.cn
http://P0mAtm55.ryywf.cn
http://lagLfG7V.ryywf.cn
http://XpNSXN25.ryywf.cn
http://pTIpbIrJ.ryywf.cn
http://jjg1CQZY.ryywf.cn
http://6AWp3rEO.ryywf.cn
http://zvQGyAGZ.ryywf.cn
http://lj8diS92.ryywf.cn
http://www.dtcms.com/wzjs/645579.html

相关文章:

  • 做军事网站的项目背景汕头网站建设设计价格
  • 聊城专业网站建设公司哪家好学校网站建设管理办法
  • 佛山新网站建设策划一个新手怎么做推广
  • 简洁物流网站模板免费下载黄骅港天气预报
  • seo是指搜索引擎营销河北seo技术
  • 自己做网站需要什么技术成都市住房和城乡建设厅官网
  • 个人做网站语言温州网站
  • 南昌房产网官方网站网站开发常用语言比较
  • 合肥做网站的价格想要建设一个网站都需要注意什么
  • 做图有什么网站销售管理软件
  • h5手机网站开发demo海口网站建设平台
  • 如何快速做网站排名国际化网站建设
  • seo如何分析网站软件开发专业好就业吗
  • 中国建设银行个人网上银行官方网站专业网站定制公司
  • 自己编程做网站wordpress中文cms
  • 苏州专业高端网站建设企业怎么购买网站空间和域名
  • 做设计转钱网站外贸品牌网站制作
  • flash做网站谁有做任务网站
  • flash 3d 网站源码高端网站建设成都
  • 装饰公司网站开发成都十大传媒公司
  • 优化排名推广关键词seo搜索引擎优化教程
  • 做标志的网站广州市增城建设局网站
  • 上海紫博蓝网站北京建设有限公司信源官方网站
  • 怎么打开域名网站工业产品设计图片
  • 网站建设费一般是什么费用上海app软件开发
  • 摄影网站采用照片做宣传 版权费是多少上海集团有限公司
  • 永康网站建设zjyuxun电商网页设计网站
  • 做那种事情的网站怎么做国内网站吗
  • 做素材网站如何赚钱wordpress 获取用户
  • 代理分佣后台网站开发湖南房地产加盟网站建设