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

网上做兼职的网站有哪些官方网站建设 招标公告

网上做兼职的网站有哪些,官方网站建设 招标公告,中国投诉网站做袜子机器多少钱一台,国外wordpress主题站目录 第一题 思路#xff1a; 第二题 思路 第三题 描述 示例1 思路 总结#xff1a;这种类似的题#xff0c;都是用快慢指针#xff0c;相差一定的距离然后输出慢指针。 第一题 给你一个链表的头节点 head 和一个整数 val #xff0c;请你删除链表中所有满足 Node.val…目录 第一题 思路 第二题 思路 第三题 描述 示例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 输出[] 方法一 思路 快慢指针一个指向目标结点一个指向目标结点的前驱结点。用一个tmp保存pos-next.                   free()掉目标结点。 分两种情况如果只有一个节点或者要删除的结点是首元节点那么这时pre为NULLpos                       指向pos否则pre-next pos struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode* pre NULL;struct ListNode* pos head;while(pos!NULL){if(pos-valval){struct ListNode* tmp pos-next;free(pos);pos tmp;if(preNULL){head pos;}else{pre-next pos;}}else{pre pos;pos pos-next;}}return head; } 方法二  思想 创建新链表用尾插法尾插法没有改变原指针的next指向所以不用保存next节点 但是在free时要保存下一节点。 struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode* cur head;struct ListNode* newhead NULL;struct ListNode* tail NULL;while(cur!NULL){if(cur-val!val){if(newheadNULL){newhead tail cur;}else{tail-next cur;tail cur;}cur cur-next;}else{struct ListNode* tmp cur -next;free(cur);cur tmp;}}if(tail)tail-nextNULL;return newhead;} 第二题 给你单链表的头结点 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 返回第二个结点。 思路 用快慢指针快指针一次走两个慢指针一次走一个。这样他们的路程之间差二倍。所以输出慢指针即输出中间节点。 struct ListNode* middleNode(struct ListNode* head) {struct ListNode* slow head;struct ListNode* fast head;while(fast!NULLfast-next!NULL){slow slow -next;fast fast-next-next;}return slow; } 第三题 描述 输入一个链表输出该链表中倒数第k个结点。 示例1 输入 1,{1,2,3,4,5} 复制返回值 {5} 思路 用快慢指针快指针比慢指针先走k步然后两者在同时走。 struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {// write code herestruct ListNode* pre pListHead;struct ListNode* pos pListHead;while(k--){if(pos!NULL){pos pos-next;}else{return NULL;}}while(pos!NULL){pre pre-next;pos pos-next;}return pre;} 总结这种类似的题都是用快慢指针相差一定的距离然后输出慢指针。 第四题  给你单链表的头节点 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 进阶链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题 方法一 将节点之间的next翻转。 用三个指针的原因是只用两个指针翻转时会导致链表断裂但是用第三个指针保存下一个节点这样链表就不会断裂。 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*///方法一 struct ListNode* reverseList(struct ListNode* head) {if(headNULL)return NULL;struct ListNode* left NULL;struct ListNode* right head;struct ListNode* tmp head-next;while(right!NULL){right-next left;left right;right tmp;if(tmp!NULL)tmp tmp-next;}return left; } 方法二  用头插法注意头插法需要保存指针。尾插法不用保存指针。 错误总结 1注意头插是新结点指向头结点然后在将新节点设置为头结点。而不是直接将新节点设置为头节点  2C语言赋值语句左值是变量将新节点设置为头结点。newnode cur这是头结点为cur //方法二 struct ListNode* reverseList(struct ListNode* head) {if(headNULL)return NULL;struct ListNode* cur head;struct ListNode* newhead NULL;while(cur!NULL){struct ListNode* next cur -next; //保存下一个cur-next newhead;newhead cur;cur next;}return newhead; }
http://www.ihoyoo.com/news/33607.html

相关文章:

  • 免费建手机商城网站吗wordpress投票代码
  • 杭州网站建设培训学校响应式企业网站源码
  • 网络公司要求做网站工商网监免费的网络软件
  • 网站做推广怎么收费建筑设计咨询公司要不要资质
  • 关于网站开发的个人小结下载关键词推广软件
  • 做网站找哪家好熊掌号石家庄外贸网站推广
  • 做行业网站投入购物网站建设优势
  • 国外服务器做网站不能访问免费做h5的网站有哪些
  • 网站建设费用明细 xlsseo排名app
  • 网站代码免费的移动网站建站视频
  • 龙岩市住房和城乡建设厅网站网页无法访问错误代码6
  • 宁波模板网站建站微信小视频网站开发
  • 小说网站快速做排名在360网站上怎么做推广
  • 搜索引擎在哪里获取网站wordpress默认密码
  • 网站制作基本规则北京招聘网
  • 网站如何做广告广州电子商务网站建设
  • 百度网站网址是什么长春seo结算
  • 湘潭手机网站wordpress安装地址
  • 做优化网站建设wordpress漏洞改密码
  • 网站建设 江苏wordpress更知鸟
  • 更新网站 seo崂山网站建设
  • 厦门网站seo哪家好怎样在wordpress里添加菜单
  • 河源网站推广wordpress写技术博客
  • 湛江网站制作计划南宁网页设计招聘
  • 网站专业优化公司极品wordpress素材教程网站
  • 推荐门户网站建设公司谷歌seo教程
  • 四川住房和城乡建设局网站首页建设网站所需的费用的估算
  • 专业网站制作全包企业标识
  • 小型门户网站建设硬件配置织梦调用网站名称
  • 百度网站推广外包免费建网站系统平台