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

云南集优科技网站cute wordpress主题破解版

云南集优科技网站,cute wordpress主题破解版,英文官网建设,微信属于营销型网站目录1、介绍2、链表的基本类型3、相关算法题【1】移除链表元素【2】设计链表1、介绍 链表是一种基础而强大的线性数据结构,其核心思想是通过节点和指针构建数据序列。与数组不同,链表中的元素在内存中非连续存储,每个节点包含数据和指向下一…

目录

  • 1、介绍
  • 2、链表的基本类型
  • 3、相关算法题
    • 【1】移除链表元素
    • 【2】设计链表

1、介绍

链表是一种基础而强大的线性数据结构,其核心思想是通过节点和指针构建数据序列。与数组不同,链表中的元素在内存中非连续存储,每个节点包含数据和指向下一节点的指针。

2、链表的基本类型

类型结构特点时间复杂度
单向链表节点:数据+指向下一节点的指针单向遍历插入/删除头节点:O(1)
插入/删除尾节点:O(n)
双向链表节点:数据+指向前后节点的指针双向遍历任意位置插入/删除:O(1)
循环链表尾节点指向头节点环形结构从任意节点开始遍历整个链表

3、相关算法题

【1】移除链表元素

LeetCode第203题,题目如下:

给你一个链表的头节点 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 <= 50
0 <= val <= 50

代码示例:

type ListNode struct {Val  intNext *ListNode
}func removeElements(head *ListNode, val int) *ListNode {//创建一个虚拟头节点dummy := &ListNode{Next: head}prev := dummycurrent := headfor current != nil {if current.Val == val {//跳过当前节点prev.Next = current.Next} else {//移动prev指针prev = current}//移动current指针current = current.Next}return dummy.Next
}

【2】设计链表

LeetCode第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); // 返回 3

提示:

0 <= index, val <= 1000
请不要使用内置的 LinkedList 库。
调用 get、addAtHead、addAtTail、addAtIndex 和 deleteAtIndex 的次数不超过 2000 。

代码示例:

type MyLinkedList struct {head *MyListNodesize int //链表节点数量
}type MyListNode struct {Val  intNext *MyListNode
}func Constructor() MyLinkedList {return MyLinkedList{}
}// Get 获取链表中下标为 index 的节点的值。如果下标无效,则返回 -1
func (l *MyLinkedList) Get(index int) int {if index < 0 || index >= l.size {return -1}current := l.head //头节点为当前节点for i := 0; i < index; i++ {current = current.Next}return current.Val
}// AddAtHead 将一个值为 val 的节点插入到链表中第一个元素之前。在插入完成后,新节点会成为链表的第一个节点
func (l *MyLinkedList) AddAtHead(val int) {newHeadNode := &MyListNode{Val:  val,Next: l.head,}l.head = newHeadNodel.size++
}// AddAtTail 将一个值为 val 的节点追加到链表中作为链表的最后一个元素
func (l *MyLinkedList) AddAtTail(val int) {newTailNode := &MyListNode{Val: val}if l.head == nil {l.head = newTailNode} else {current := l.headfor current.Next != nil {current = current.Next}current.Next = newTailNode}l.size++
}// AddAtIndex 将一个值为 val 的节点插入到链表中下标为 index 的节点之前。如果 index 等于链表的长度,那么该节点会被追加到链表的末尾。如果 index 比长度更大,该节点将 不会插入 到链表中
func (l *MyLinkedList) AddAtIndex(index int, val int) {if index < 0 || index > l.size {return}if index == 0 {l.AddAtHead(val)return}if index == l.size {l.AddAtTail(val)return}newNode := &MyListNode{Val: val}prev := l.head//找插入位置的前一个节点for i := 0; i < index-1; i++ {prev = prev.Next}newNode.Next = prev.Next //更新插入节点的下一个节点prev.Next = newNode      //更新前一个节点的下一个节点l.size++
}// DeleteAtIndex 如果下标有效,则删除链表中下标为 index 的节点
func (l *MyLinkedList) DeleteAtIndex(index int) {if index < 0 || index >= l.size {return}if index == 0 {l.head = l.head.Next} else {prev := l.headfor i := 0; i < index-1; i++ {prev = prev.Next}prev.Next = prev.Next.Next}l.size--
}
http://www.dtcms.com/wzjs/797635.html

相关文章:

  • 重庆北碚网站建设网站开发定制公司
  • 网站建设维护与推广wordpress父网页
  • 如何制作一个公司网站青岛住房和城乡建设部网站
  • 淘宝单网站建设成都设计平台
  • 手机网站制作视频教程aspcms网站地图
  • 个人做同城网站赚钱吗贵阳专业网站制作
  • 常见的网站推广方式有哪些网站建设招标
  • 网站优化效果怎么样WordPress 登录名用手机
  • 环保网站建设项目备案系统html模板怎么用
  • 企业官方网站建设搜索引擎网站搭建
  • 贺州网站制作海口模板网站建站
  • 郑州网站推广地址网站建设前期费用
  • 网站优化成功案例乐云seo可视化网站建设
  • ps做素材下载网站有哪些怎么样推广自己的公司
  • W做网站兰州做网站客户
  • android 移动网站开发软件外包产业
  • 简述建设iis网站的基本过程创研科技网站
  • 瑞幸咖啡网站建设方案网站建设完成情况工作总结
  • 赣州市南康建设局网站站酷网logo
  • 网站开发软件启动用wordpress 部署
  • 涿州吧seo优化方法网站快速排名推广渠道
  • 国外工作室网站建凡网站
  • 2017优秀网站设计欣赏有没有做兼职的网站
  • 网站icp备案管理系统建网站资料
  • 淘宝上的网站怎么做自己做的电影网站打开很慢
  • 自己怎么做团购网站首页辽宁做网站
  • html代码网站wordpress采集文章自动翻译
  • 做良心网站安阳区号12345
  • 广州开发公司网站优化意见
  • 网站初期如何推广的展厅设计多少钱一平米