网站建设的基本因素是什么卫计局网站建设工作总结

张小明 2026/1/13 7:13:01
网站建设的基本因素是什么,卫计局网站建设工作总结,周到的商城网站建设,婚庆网站名字今天又是3道题的一天#xff0c;难度范围#xff1a;★★~★★★★。 今天感觉格外有成就感#xff1a;在不想敲的时候#xff0c;告诉自己先写完这道题#xff0c;最后完成了3道题#xff1b;在第三题做不出来想放弃想问豆包的时候#xff0c;问自己如果这是比赛是面试…今天又是3道题的一天难度范围★★~★★★★。今天感觉格外有成就感在不想敲的时候告诉自己先写完这道题最后完成了3道题在第三题做不出来想放弃想问豆包的时候问自己如果这是比赛是面试哪里来的豆包所以坚持思考最终做了出来。我为自己感到骄傲。一.升序合并文件 ★★★☆☆题目将两个文件A.txt和B.txt各存放一行升序的字母要求把这两个文件的信息按升序合并保存到一个新文件C.txt中。思路这道题整体思路是获取文件内容到字符串中→合并字符串内容→保存到新文件中。1.获取文件内容 char* ReadFile(const char* fileName,int* outLen)1.1 要想获取到文件的内容那么文件必须已经存在且有内容所以在这一步之前需要自己创建好文件并添加内容当然也可以下一个SetFile函数来实现这一步。有了文件和内容之后就可以通过fread来获取文件的内容。1.2 利用字符串保存文件内容需要提前知道文件的长度所以需要先利用fseek和ftell求出文件的长度fileLen。1.3 为结果字符串res申请fileLen1空间并初始化为0不用在保存文件内容后手动添加字符串结束符。利用fread将文件内容存入到字符串中。2.对两个字符串进行合并排序 char* MergeSort(const char* strA, int lenA, const char* strB, int lenB)2.1 字符串作为函数参数时需要同时传递字符串的长度由此可知在获取文件内容的时候还需要获取对应内容的长度这里可以将长度变量的地址作为参数传递即设置一个指针作为参数通过对应指针的值就能获取到文件内容的长度2.2 合并排序的基础是待合并的两个字符串已经有序所以要提前利用一种算法先使读取的文件内容有序我使用的是冒泡排序2.3 接下来通过合并排序的思想实现即可创建长度为lenAlenB1的结果字符串res依次比较两个字符串的个字母将较小的放入res3.利用前几步创建的函数实现将两个文件内容的升序合并到新文件中。先读取文件内容再是内容有序再利用合并函数合并到一个字符串中写入指定文件。代码//设定文件内容——也可以自己手动创建并写入 void SetFILE() { //将升序字母写入 char strA[] hello; char strB[] world; FILE* fpA fopen(A.txt, w); assert(fpA ! NULL); if (fpA NULL) { fclose(fpA); return; } fwrite(strA, sizeof(char), strlen(strA), fpA); fclose(fpA); FILE* fpB fopen(B.txt, w); assert(fpB ! NULL); if (fpB NULL) { fclose(fpB); return; } fwrite(strB, sizeof(char), strlen(strB), fpB); fclose(fpB); } //读取文件内容长度 char* ReadFile(const char* fileName,int* outLen) { assert(fileName ! NULL); if (fileName NULL) { return NULL; } FILE* fp fopen(fileName, r); assert(fp ! NULL); if (fp NULL) { *outLen 0; return NULL; } //求文件的长度 fseek(fp, 0, SEEK_END); long fileLen ftell(fp); fseek(fp, 0, SEEK_SET); char* res (char*)calloc(sizeof(char), fileLen 1); assert(res ! NULL); if (res NULL) { *outLen 0; return NULL; } *outLen (int)fread(res, sizeof(char), fileLen, fp); fclose(fp); return res; } //给字符串排序——冒泡排序 void StrBubbleSort(char* str,int len) { if (len 0) { return; } int i 0; int end len - 1; while (end 0) { while (i len - 1) { if (str[i] str[i1]) { char temp str[i]; str[i] str[i1]; str[i1] temp; } i; } end--; i 0; } } //合并排序 char* MergeSort(const char* strA, int lenA, const char* strB, int lenB,int* outLen) { assert(strA ! NULL strB ! NULL); if (strA NULL || strB NULL) { *outLen 0; return NULL; } int resLen lenA lenB 1; char* res (char*)calloc(sizeof(char), resLen); assert(res ! NULL); if (res NULL) { *outLen 0; return NULL; } int i 0, j 0, k 0; while (i lenA j lenB) { if (strA[i] strB[j]) { res[k] strA[i]; } else { res[k] strB[j]; } } while (i lenA) res[k] strA[i]; while (j lenB) res[k] strB[j]; *outLen resLen; return res; } //合并排序两个文件内容 void MergeFile() { int lenA 0; int lenB 0; char* strA ReadFile(A.txt, lenA); char* strB ReadFile(B.txt, lenB); assert(strA ! NULL strB ! NULL); if (strA NULL || strB NULL) { return; } printf(A.txt:%s\n, strA); printf(B.txt:%s\n, strB); //将字符串用升序排列 StrBubbleSort(strA, lenA); StrBubbleSort(strB, lenB); int fileCLen 0; char* res MergeSort(strA, lenA, strB, lenB, fileCLen); assert(res ! NULL); if (res NULL) { return; } FILE* fp fopen(C.txt, w); assert(fp ! NULL); if (fp NULL) { return; } fwrite(res, sizeof(char), fileCLen, fp); printf(升序合并结果%s 已成功写入C.txt\n, res); fclose(fp); free(strA); free(strB); free(res); } int main() { SetFILE(); MergeFile(); return 0; }复杂度时间复杂度整体时间复杂度由各个函数时间复杂度“相加”后的最高项决定。读取文件O(n)冒泡排序O(n²)合并O(mk)其中m、k是两个字符串的长度所以最终时间复杂度是O(nn²nn)O(n²)。空间复杂度文件读取中动态分配了两个字符串的内存O (m k)归并合并动态分配了结果字符串的内存O (m k)所以最终空间复杂度是O(mk)其中m、k是两个字符串的长度。二.相交链表 ★★☆☆☆题目160. 相交链表 给你两个单链表的头节点headA和headB请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点返回null。我的思路创建一个哈希集合然后先将链表1装入哈希集合遍历链表2如果在哈希集合中找到链表2的节点说明两个链表相交返回相交的节点反之循环结束返回NULL代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { unordered_setListNode* s1; //1.将链表存入哈希表 while(headA ! NULL){ s1.insert(headA); headAheadA-next; } //2.在哈希表中找第二个链表节点 while(headB ! NULL){ //能找到就相交 if(s1.find(headB)!s1.end()){ return headB; } headBheadB-next; } //没找到就不相交 return NULL; } };复杂度m、n分别为两个链表的长度时间复杂度O(mn)。将链表1复制到哈希集合上循环m次在哈希集合中寻找链表2的节点最多循环n次所以时间复杂度为O(mn)。空间复杂度O(m)。哈希集合的空间大小——存储链表 A 的所有节点。官方题解思路——双指针法首先判断两个链表是否为空有一个为空就直接返回NULL。两者都不为空创建两个临时变量分别指向两个链表的头结点然后移动指针当指针移动到最后时使其指向另一条链表的头结点这样以来两者会因为移动的距离相等而指向同一块位置返回此时的位置即可。说明当两个链表不相交时走了一样的距离时都会指向NULL所以此时刚好返回NULL当两个链表相交时最终会在相交节点处相等。也可以去看官方题解的说明很详细。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { if(headANULL || headBNULL){ return NULL; } ListNode* pheadA; ListNode* qheadB; while(p ! q){ //循环→两指针移动距离一样→相等则相交不相等ze p pNULL ? headB :p-next; q qNULL ? headA : q-next; } return p; } };复杂度时间复杂度O(mn)。最坏情况下两个指针会遍历两个链表的长度mn要么在最后一个节点相交返回对应节点要么不相交返回NULL。空间复杂度O(1)。只有指针变量的空间常数级。三.多数元素 ★★★★☆题目169. 多数元素给定一个大小为n的数组nums返回其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的并且给定的数组总是存在多数元素。说明其实这道题的大体思路不难就是记录每个数的个数将个数一半的输出但是我卡在了怎么降低时间复杂度上。一开始我尝试用multiset就是可以重复元素的哈希集合自带的count函数将countlen/2的输出但是这个函数最坏情况下的时间复杂度就是O(n)它又是在给multiset赋值的循环中所以时间复杂度为O(n²)在遇到很极端的用例时运行就会超时。然后我想破脑袋想到了哈希表可以存放两个元素所以我把其中的key用来保存数组元素value用来保存对应元素的个数这样一来时间复杂度就下来了。我的思路利用哈希表其中的key用来保存数组元素value用来保存对应元素的个数。遍历数组如果在哈希表中找到了对应元素就将value同时判断value是否len/2大于直接退出循环输出这个数反之令value为1表示个数为1。代码class Solution { public: int majorityElement(vectorint nums) { int lennums.size(); if(len2){ return nums[0]; } int res0; unordered_mapint,int map; for(int i0;ilen;i){ if(map.find(nums[i])!map.end()){ map[nums[i]]; if(map[nums[i]]len/2){ resnums[i]; break; } }else{ map[nums[i]]1; } } return res; } };复杂度时间复杂度O(n)。空间复杂度O(n)。最坏情况下哈希表长度为n/2因为一定存在多数元素所以数组最多有n/2个元素。官方题解思路1——哈希表我的思路和这个大差不差但是在循环中有些许差异。1.不用通过find查找后再修改value直接对map[nums[i]]; 即可因为当nums[i]不存在时nums[i]会自动插入且value会自动初始化为0然后自增。2.不找个数大于len/2的数而找个数最多的数使用打擂台的方法维护最大的值即遍历哈希映射中的所有键值对返回值最大的键。代码class Solution { public: int majorityElement(vectorint nums) { unordered_mapint, int counts; int majority 0, cnt 0; for (int num: nums) { counts[num]; if (counts[num] cnt) { majority num; cnt counts[num]; } } return majority; } };复杂度思路2——排序将数组元素升序排列因为多数元素是指个数数组长度n的一半的元素所以下标为n/2的元素一定是多数。这个思路真的绝果然最后编程考的还是数学思维。代码class Solution { public: int majorityElement(vectorint nums) { sort(nums.begin(),nums.end()); return nums[nums.size()/2]; } };复杂度时间复杂度O(nlogn)。将数组排序的时间复杂度为 O(nlogn)。空间复杂度O(logn)。如果使用语言自带的排序算法需要使用 O(logn) 的栈空间。如果自己编写堆排序则只需要使用 O(1) 的额外空间。官方还有三种方法但我今天就到这了下次再续。思路3——随机化思路4——分治思路5——Boyer-Moore 投票算法
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

怎样自学做网站wordpress视频页面模板

一张人脸照片文本会说话的数字人?Linly-Talker做到了 在短视频与直播内容爆炸式增长的今天,越来越多的企业和个人开始尝试用“虚拟形象”来传递信息。但你有没有想过,只需要一张自拍和一段文字,就能让这张脸开口说话、讲解知识、甚…

张小明 2026/1/8 17:31:35 网站建设

深圳网站建设亿联时代北京网站建设的服务商

5分钟快速上手:Source Han Sans SC Woff2字体提升你的网页设计质感 【免费下载链接】SourceHanSansSCWoff2字体资源下载介绍 Source Han Sans SC Woff2 字体资源库,提供由Adobe与谷歌联合开发的高质量中文字体。该字体专为中文、日文和韩文设计&#xff…

张小明 2026/1/7 22:58:12 网站建设

南京企业网站seo怎样说服老板做网站

课题介绍本课题聚焦出行类票务预约购票流程分散、信息同步不及时、用户出行规划与票务管理脱节的痛点,设计实现基于 SpringBoot(Java)的预约购票出行服务系统。系统以 SpringBoot 为核心框架,整合 Spring MVC 完成请求处理与业务逻…

张小明 2026/1/8 20:32:20 网站建设

西安网站制作首页湖南室内设计公司排名

B站Linux客户端终极指南:免费解锁完整观影体验 【免费下载链接】bilibili-linux 基于哔哩哔哩官方客户端移植的Linux版本 支持漫游 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-linux 想要在Linux系统上享受原汁原味的B站观影体验吗?这…

张小明 2026/1/8 21:37:59 网站建设

蜗牛星际做网站服务器中国世界排名前300的大学

当你在运行复杂光线追踪场景时,是否经历过画面卡顿、内存占用飙升的困扰?特别是在渲染包含多个高分辨率纹理的场景时,程序可能因内存溢出而崩溃。本文将通过raytracing.github.io项目中的真实案例,深入剖析纹理内存优化的核心技术…

张小明 2026/1/12 23:52:08 网站建设

邮箱官方网站注册建立网站软件

ClusterGAN实战指南:无监督图像聚类与生成的双重突破 【免费下载链接】PyTorch-GAN PyTorch implementations of Generative Adversarial Networks. 项目地址: https://gitcode.com/gh_mirrors/py/PyTorch-GAN 在人工智能快速发展的今天,传统聚类…

张小明 2026/1/11 6:23:35 网站建设