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

怎么做单页网站网站开发项目怎么接

怎么做单页网站,网站开发项目怎么接,跨境电商开店要多少钱,苏州网站网站建设个人主页#xff1a;秋风起#xff0c;再归来~ 数据结构与算法 个人格言#xff1a;悟已往之不谏#xff0c;知来者犹可追 克心守己#xff0c;律己则安#xff01; 目录 1、顺序表 1.1 合并两个有序数组 1.2 原地移除数组中所有的元素va… 个人主页秋风起再归来~                                                                                             数据结构与算法                                                                                                     个人格言悟已往之不谏知来者犹可追                                                                                         克心守己律己则安 目录 1、顺序表 1.1 合并两个有序数组 1.2 原地移除数组中所有的元素val 2、链表 2.1 移除链表元素 2.2 反转链表 2.3 合并两个有序链表 2.4 链表的中间节点 2.5 环形链表的约瑟夫问题 2.6 分割链表 3、完结散花 1、顺序表 1.1 合并两个有序数组 题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中使合并后的数组同样按 非递减顺序 排列。 注意最终合并后数组不应由函数返回而是存储在数组 nums1 中。为了应对这种情况nums1 的初始长度为 m n其中前 m 个元素表示应合并的元素后 n 个元素为 0 应忽略。nums2 的长度为 n 。 示例 1 输入nums1 [1,2,3,0,0,0], m 3, nums2 [2,5,6], n 3 输出[1,2,2,3,5,6] 解释需要合并 [1,2,3] 和 [2,5,6] 。 合并结果是 [1,2,2,3,5,6] 其中斜体加粗标注的为 nums1 中的元素。示例 2 输入nums1 [1], m 1, nums2 [], n 0 输出[1] 解释需要合并 [1] 和 [] 。 合并结果是 [1] 。示例 3 输入nums1 [0], m 0, nums2 [1], n 1 输出[1] 解释需要合并的数组是 [] 和 [1] 。 合并结果是 [1] 。 注意因为 m 0 所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。提示 nums1.length m nnums2.length n0 m, n 2001 m n 200-109 nums1[i], nums2[j] 109 OJ链接合并两个有序数组 解题代码 void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {int tailnums1Size-1;int p1m-1;int p2n-1;while(p10p20){if(nums1[p1]nums2[p2]){nums1[tail--]nums1[p1--];}else{nums1[tail--]nums2[p2--];}}if(p10){while(p20){nums1[tail--]nums2[p2--];}} } 1.2 原地移除数组中所有的元素val 题目描述 给你一个数组 nums 和一个值 val你需要 原地 移除所有数值等于 val 的元素并返回移除后数组的新长度。 不要使用额外的数组空间你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明: 为什么返回数值是整数但输出的答案是数组呢? 请注意输入数组是以「引用」方式传递的这意味着在函数里修改输入数组对于调用者是可见的。 你可以想象内部操作如下: // nums 是以“引用”方式传递的。也就是说不对实参作任何拷贝 int len removeElement(nums, val);// 在函数里修改输入数组对于调用者是可见的。 // 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。 for (int i 0; i len; i) {print(nums[i]); }示例 1 输入nums [3,2,2,3], val 3 输出2, nums [2,2] 解释函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如函数返回的新长度为 2 而 nums [2,2,3,3] 或 nums [2,2,0,0]也会被视作正确答案。 示例 2 输入nums [0,1,2,2,3,0,4,2], val 2 输出5, nums [0,1,3,0,4] 解释函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0 1,3,0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。提示 0 nums.length 1000 nums[i] 500 val 100 OJ链接移除元素 解题代码 int removeElement(int* nums, int numsSize, int val) {if(numsSize0||numsNULL)return 0;int cur0;//用cur去遍历原数组int newNums0;while(numsSize--){if(nums[cur]val){cur;}else{nums[newNums]nums[cur];}}return newNums; } 2、链表 2.1 移除链表元素 题目描述 给你一个链表的头节点 head 和一个整数 val 请你删除链表中所有满足 Node.val val 的节点并返回 新的头节点 。 示例 1 输入head [1,2,6,3,4,5,6], val 6 输出[1,2,3,4,5]示例 2 输入head [], val 1 输出[]示例 3 输入head [7,7,7,7], val 7 输出[]提示 列表中的节点数目在范围 [0, 104] 内1 Node.val 500 val 50 OJ链接移除链表元素 解题代码  typedef struct ListNode ListNode; struct ListNode* removeElements(struct ListNode* head, int val) {if(headNULL)return NULL;ListNode* newHead(ListNode*)malloc(sizeof(ListNode));//创建一个带哨兵卫的头结点ListNode* newTailnewHead;ListNode* curhead;while(cur){if(cur-valval){curcur-next;}else{newTail-nextcur;newTailnewTail-next;curcur-next;}}newTail-nextNULL;return newHead-next; } 2.2 反转链表 题目描述 给你单链表的头节点 head 请你反转链表并返回反转后的链表。 示例 1 输入head [1,2,3,4,5] 输出[5,4,3,2,1]示例 2 输入head [1,2] 输出[2,1]示例 3 输入head [] 输出[]提示 链表中节点的数目范围是 [0, 5000]-5000 Node.val 5000 题目链接反转单链表 解题代码 typedef struct ListNode ListNode; struct ListNode* reverseList(struct ListNode* head) {if(headNULL)return NULL;ListNode* n1,*n2,*n3;n1NULL;n2head;n3head-next;while(n2){n2-nextn1;n1n2;n2n3;if(n3){n3n3-next;}}return n1; } 2.3 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  示例 1 输入l1 [1,2,4], l2 [1,3,4] 输出[1,1,2,3,4,4]示例 2 输入l1 [], l2 [] 输出[]示例 3 输入l1 [], l2 [0] 输出[0]提示 两个链表的节点数目范围是 [0, 50]-100 Node.val 100l1 和 l2 均按 非递减顺序 排列 OJ链接合并两个有序链表 typedef struct ListNode ListNode; struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {ListNode* newHead,*newTail;newTailnewHead(ListNode*)malloc(sizeof(ListNode));ListNode* l1list1;ListNode* l2list2;while(l1l2){if((l1-val)(l2-val)){newTail-nextl1;l1l1-next;}else{newTail-nextl2;l2l2-next;}newTailnewTail-next;}if(l1){newTail-nextl1;}else{newTail-nextl2;}return newHead-next; } 2.4 链表的中间节点 给你单链表的头结点 head 请你找出并返回链表的中间结点。 如果有两个中间结点则返回第二个中间结点。 示例 1 输入head [1,2,3,4,5] 输出[3,4,5] 解释链表只有一个中间结点值为 3 。示例 2 输入head [1,2,3,4,5,6] 输出[4,5,6] 解释该链表有两个中间结点值分别为 3 和 4 返回第二个结点。提示 链表的结点数范围是 [1, 100]1 Node.val 100 OJ链接链表的中间节点 typedef struct ListNode ListNode; struct ListNode* middleNode(struct ListNode* head) {if(headNULL)return NULL;ListNode* fast,*slow;fastslowhead;while(fastfast-next){fastfast-next-next;slowslow-next;}return slow; } 2.5 环形链表的约瑟夫问题 编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数报到 m 的人离开。 下一个人继续从 1 开始报数。 n-1 轮结束以后只剩下一个人问最后留下的这个人编号是多少 数据范围 1≤n,m≤10000 进阶空间复杂度O(1)时间复杂度 O(n)    OJ链接环形链表的约瑟夫问题 typedef struct ListNode ListNode; ListNode* byNode(int x) {ListNode* node(ListNode*)malloc(sizeof(ListNode));if(nodeNULL){exit(1);}node-valx;return node; } ListNode* creatCircle(int x) {ListNode* head(ListNode*)malloc(sizeof(ListNode));//创建头结点if(headNULL){exit(1);}ListNode* tailhead;for(int i1;ix;i){tail-nextbyNode(i);tailtail-next;}tail-nexthead-next;return tail; }int ysf(int n, int m ) {// write code here//创建循环链表并返回尾节点ListNode* prevcreatCircle(n);ListNode* curprev-next;int count1;//报数while(cur!cur-next){if(countm){prev-nextcur-next;free(cur);curprev-next;count1;//重置为1}else {prevcur;curcur-next;count;}}return cur-val; } 2.6 分割链表 给你一个链表的头节点 head 和一个特定值 x 请你对链表进行分隔使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 示例 1 输入head [1,4,3,2,5,2], x 3 输出[1,2,2,4,3,5]示例 2 输入head [2,1], x 2 输出[1,2]提示 链表中节点的数目在范围 [0, 200] 内-100 Node.val 100-200 x 200 OJ链接分割链表 typedef struct ListNode ListNode; struct ListNode* partition(struct ListNode* head, int x){if(headNULL){return NULL;}//创建两个头结点ListNode* lessHead(ListNode*)malloc(sizeof(ListNode));if(lessHeadNULL){exit(1);}ListNode* greaterHead(ListNode*)malloc(sizeof(ListNode));if(greaterHeadNULL){exit(1);}ListNode* lessTaillessHead;ListNode* greaterTailgreaterHead;lessHead-nextgreaterHead-nextNULL;ListNode* curhead;while(cur){if(cur-valx){lessTail-nextcur;lessTaillessTail-next;}else{greaterTail-nextcur;greaterTailgreaterTail-next;}curcur-next;}lessTail-nextgreaterHead-next;greaterTail-nextNULL;return lessHead-next; }3、完结散花 好了这期的分享到这里就结束了~ 如果这篇博客对你有帮助的话可以用你们的小手指点一个免费的赞并收藏起来哟~ 如果期待博主下期内容的话可以点点关注避免找不到我了呢~ 我们下期不见不散~~ ​​​​
http://www.dnsts.com.cn/news/261242.html

相关文章:

  • 可以做外链网站如何在国外网站做翻译兼职
  • 门户网站手机版机构网站建设
  • 建设小说网站用什么软件下载前端招聘网站
  • 怎么建设外贸网站域名停域免费观看软件
  • 九五至尊娱乐场网站网站导航效果
  • 东莞官方网站设计学做甜点的网站
  • 长春市城乡建设局网站优化网站的方法有哪些
  • 室外建筑网站重庆装修公司平台
  • 单页的网站怎么做的淘宝客网站免费建站
  • 如何自己开发一个自己的网站gis网站开发实战教程
  • 做a视频 免费网站wordpress商业主体
  • 厦门营销型网站建设做初中题赚钱的网站
  • 中文绿色环保网站模板下载湖南人文科技学院宿舍
  • 网站做反向解析大连网络营销公司有哪些
  • 网站的登录注册页面怎么做的广东省自然资源厅邮箱
  • 安徽城乡建设厅网站焊工证查询漯河网站建设哪家
  • 网站建设风格总结wordpress 最弱
  • 免费在线观看电影电视剧网站电商网站订烟平台官网
  • 请被人做网站如何让百度能查到自己
  • dedecms网站地图修改wordpress oop
  • 建设局网站信息发布规定杭州做网站优化
  • 兰州网站建设cheng株洲网站制作公司
  • 免费加盟无需店面灰色seo推广
  • 网站备案时间周期一般多久如何做好网站推广工作
  • 网站优化排名易下拉霸屏图片在线转外链
  • thinkphp可以做网站吗抖音广告推广
  • 扬州市网站建设360网站建设公司哪家好
  • 网站建设较好的公司济南网络科技有限公司
  • 广州建站快车广州安全教育平台咨询电话
  • 黑龙江网站建设工作室wordpress中点击图片_图片显示出来后的底色