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

有经验的企业做网站开网店 建网站要钱吗

有经验的企业做网站,开网店 建网站要钱吗,网站建设开发计划,外链链接平台以下刷题思路来自代码随想录以及官方题解 文章目录 203.移除链表元素707.设计链表206.反转链表24.两两交换链表中的节点19.删除链表的倒数第N个节点面试题 02.07. 链表相交142.环形链表II 203.移除链表元素 给你一个链表的头节点 head 和一个整数 val #xff0c;请你删除链…以下刷题思路来自代码随想录以及官方题解 文章目录 203.移除链表元素707.设计链表206.反转链表24.两两交换链表中的节点19.删除链表的倒数第N个节点面试题 02.07. 链表相交142.环形链表II 203.移除链表元素 给你一个链表的头节点 head 和一个整数 val 请你删除链表中所有满足 Node.val val 的节点并返回新的头节点 。 输入head [1,2,6,3,4,5,6], val 6 输出[1,2,3,4,5]输入head [], val 1 输出[]输入head [7,7,7,7], val 7 输出[]/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ class Solution {public ListNode removeElements(ListNode head, int val) {//首先解决头节点不为空为val的情况while (head ! null head.val val) {head head.next;}// 如果头节点为空if (head null) {return head;}ListNode pre head;ListNode cur head.next;while (cur ! null) {// 判断值相等if (cur.val val) {pre.next cur.next;} else {pre cur;}cur cur.next;}return head;} }707.设计链表 你可以选择使用单链表或者双链表设计并实现自己的链表。 单链表中的节点应该具备两个属性val和next 。val 是当前节点的值next 是指向下一个节点的指针/引用。 如果是双向链表则还需要属性 prev 以指示链表中的上一个节点。假设链表中的所有节点下标从 0 开始。 实现 MyLinkedList 类 MyLinkedList() 初始化 MyLinkedList 对象。 int get(int index) 获取链表中下标为 index 的节点的值。如果下标无效则返回 -1 。 void addAtHead(int val) 将一个值为 val 的节点插入到链表中第一个元素之前。在插入完成后新节点会成为链表的第一个节点。 void addAtTail(int val) 将一个值为 val 的节点追加到链表中作为链表的最后一个元素。 void addAtIndex(int index, int val) 将一个值为 val 的节点插入到链表中下标为index 的节点之前。如果 index 等于链表的长度那么该节点会被追加到链表的末尾。如果 index 比长度更大该节点将 不会插入 到链表中。 void deleteAtIndex(int index) 如果下标有效则删除链表中下标为 index 的节点。 输入 [MyLinkedList, addAtHead, addAtTail, addAtIndex, get, deleteAtIndex, get] [[], [1], [3], [1, 2], [1], [1], [1]] 输出 [null, null, null, null, 2, null, 3]解释 MyLinkedList myLinkedList new MyLinkedList(); myLinkedList.addAtHead(1); myLinkedList.addAtTail(3); myLinkedList.addAtIndex(1, 2); // 链表变为 1-2-3 myLinkedList.get(1); // 返回 2 myLinkedList.deleteAtIndex(1); // 现在链表变为 1-3 myLinkedList.get(1); // 返回 3public class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) {this.val val;} }class MyLinkedList {// 存储链表中节点个数int size;// 虚拟头节点ListNode head;public MyLinkedList() {size 0;head new ListNode(0);}public int get(int index) {if (index 0 || index size) {return -1;}ListNode cur head;// 直接遍历到该结点for (int i 0; i index; i) {cur cur.next;}return cur.val;}public void addAtHead(int val) {addAtIndex(0, val);}public void addAtTail(int val) {addAtIndex(size, val);}public void addAtIndex(int index, int val) {if (index size) {return;}if (index 0) {index 0;}// 因为需要插入所以sizesize;// 因为是单链表所以需要找到插入位置的前节点ListNode pre head;for (int i 0; i index; i) {pre pre.next;}ListNode newNode new ListNode(val);// 这里顺序至关重要newNode.next pre.next;pre.next newNode;}public void deleteAtIndex(int index) {if (index 0 || index size) {return;}size--;if (index 0) {head head.next;return;}ListNode pre head;for (int i 0; i index; i) {pre pre.next;}pre.next pre.next.next;} }206.反转链表 给你单链表的头节点 head 请你反转链表并返回反转后的链表。 输入head [1,2,3,4,5] 输出[5,4,3,2,1]/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ class Solution {public ListNode reverseList(ListNode head) {ListNode preNode null;ListNode curNode head;ListNode temp null;while(curNode ! null){//暂存下一个节点temp curNode.next;//反转箭头curNode.next preNode;preNode curNode;curNode temp;}return preNode;} }24.两两交换链表中的节点 给你一个链表两两交换其中相邻的节点并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题即只能进行节点交换。 输入head [1,2,3,4] 输出[2,1,4,3]输入head [] 输出[]输入head [1] 输出[1]这道题我没看懂过后再来理解一下。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ class Solution {public ListNode swapPairs(ListNode head) {if(head null || head.next null){return head;}// 获取当前节点的下一个节点ListNode next head.next;// 进行递归ListNode newNode swapPairs(next.next);// 这里进行交换next.next head;head.next newNode;return next;} }19.删除链表的倒数第N个节点 给你一个链表删除链表的倒数第 n 个结点并且返回链表的头结点。 输入head [1,2,3,4,5], n 2 输出[1,2,3,5]输入head [1], n 1 输出[]输入head [1,2], n 1 输出[1]这道题的思路很好理解点赞 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {// 创建一个虚拟头节点pre将其next指针指向headListNode pre new ListNode(0);pre.next head;// 定义两个指针start和end都指向preListNode start pre, end pre;// 将start指针向前移动n个节点即start和end之间相隔n个节点while(n ! 0) {start start.next;n--;}// 同时移动start和end指针直到start指向最后一个节点while(start.next ! null) {start start.next;end end.next;}// 删除倒数第n个节点即将end的next指针指向end.next.nextend.next end.next.next;// 返回删除节点后的链表头节点return pre.next;} } 下面是力扣官方题解真的通俗移动膜拜 class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy new ListNode(0, head);int length getLength(head);ListNode cur dummy;for (int i 1; i length - n 1; i) {cur cur.next;}cur.next cur.next.next;ListNode ans dummy.next;return ans;}public int getLength(ListNode head) {int length 0;while (head ! null) {length;head head.next;}return length;} } 面试题 02.07. 链表相交 给你两个单链表的头节点 headA 和 headB 请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点返回 null 。 输入intersectVal 8, listA [4,1,8,4,5], listB [5,0,1,8,4,5], skipA 2, skipB 3 输出Intersected at 8 解释相交节点的值为 8 注意如果两个链表相交则不能为 0。 从各自的表头开始算起链表 A 为 [4,1,8,4,5]链表 B 为 [5,0,1,8,4,5]。 在 A 中相交节点前有 2 个节点在 B 中相交节点前有 3 个节点。输入intersectVal 2, listA [0,9,1,2,4], listB [3,2,4], skipA 3, skipB 1 输出Intersected at 2 解释相交节点的值为 2 注意如果两个链表相交则不能为 0。 从各自的表头开始算起链表 A 为 [0,9,1,2,4]链表 B 为 [3,2,4]。 在 A 中相交节点前有 3 个节点在 B 中相交节点前有 1 个节点。输入intersectVal 0, listA [2,6,4], listB [1,5], skipA 3, skipB 2 输出null 解释从各自的表头开始算起链表 A 为 [2,6,4]链表 B 为 [1,5]。 由于这两个链表不相交所以 intersectVal 必须为 0而 skipA 和 skipB 可以是任意值。 这两个链表不相交因此返回 null 。对于这道题同样使用哈希表来解决。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {//HashSet是一个没有重复元素的集合SetListNode set new HashSetListNode();ListNode temp headA;while(temp ! null){set.add(temp);temp temp.next;}temp headB;while(temp!null){if(set.contains(temp)){return temp;}temp temp.next;}return null;} }142.环形链表II 给定一个链表返回链表开始入环的第一个节点。 如果链表无环则返回 null。 输入head [3,2,0,-4], pos 1 输出返回索引为 1 的链表节点 解释链表中有一个环其尾部连接到第二个节点。输入head [1,2], pos 0 输出返回索引为 0 的链表节点 解释链表中有一个环其尾部连接到第一个节点。输入head [1], pos -1 输出返回 null 解释链表中没有环。我们遍历链表中的每个节点并将它记录下来一旦遇到了此前遍历过的节点就可以判定链表中存在环。借助哈希表可以很方便地实现。 /*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {public ListNode detectCycle(ListNode head) {SetListNode set new HashSet();while (head ! null) {if (set.contains(head)) {return head;} else {set.add(head);}head head.next;}return null;} }
http://www.zqtcl.cn/news/704990/

相关文章:

  • 定制型网站制作价格北京网站建设费用
  • 与女鬼做的网站上海有限公司
  • ytwzjs烟台网站建设c 做的网站又哪些
  • 做网站就是做app中国包装创意设计网
  • 淄博做网站宿迁房产网丫丫找房
  • 苏州专业做网站比较好的公司杭州好的公司网站设计
  • 做百度网站要多少钱帮做网站一般多少钱
  • 云南网站备案查询山西做网站费用
  • 北京建站管理系统开发网站高转化页面
  • 南充网站制作不会做网站能做网络销售吗
  • 这2个代码 找做网站的 安装一下搜索引擎排行榜
  • 百度收录收费 重大网站网络空间设计说明怎么写
  • 网站开发 php模板图书馆网站建设的项目报告
  • 保定模板建站定制网站wordpress 收集
  • 万网 网站模板软件开发三个主要阶段
  • 网站首页psd格式怎么做seo关键词有哪些类型
  • 做部队网站技术vue做购物网站
  • 品牌网站建设服务机构wordpress英文改中文
  • 系统开发费外链优化方法
  • 网站建设公司起名网站构建的友情链接怎么做
  • 网站建设湖南wordpress 缓存时间
  • 木藕设计网站大全福州网络营销推广产品优化
  • 建设银行网上官方网站怎么批量修改wordpress文章内容
  • 多肉建设网站的目的及功能定位app网站开发成本
  • 如何保存网站上的图片不显示图片报纸网站建设
  • 网站营销的流程品牌推广方式有哪些
  • 网站开发的条件美术字设计
  • 网站可以自己做服务器么wordpress架站教程
  • 用ps怎么做网站导航条怎么做部署iis网站
  • 酒店 网站构建怎么创建自己的网址