LeetCode 203.移除链表元素classSolution{public:ListNode*removeElements(ListNode*head,intval){//删除头结点while(head!=NULL&&head->val==val){//注意这里不是ifListNode*tmp=head;head=head->next;deletetmp;}//删除非头结点ListNode*cur=head;while(cur!=NULL&&cur->next!=NULL){if(cur->next->val==val){ListNode*tmp=cur->next;cur->next=c
代码随想录算法训练营第1天|LeetCode707.二分查找、LeetCode27.移除元素1、数组理论基础定义:数组是存放在连续内存空间上的相同类型数据的集合。获取:下标索引的方式。从0开始。删除/增添:需要移动其他元素的地址。不能删除,只能覆盖。vectorVSarray:vector是容器,底层实现是arrayJava中没有指针,且不对程序员暴露元素地址。2、LeetCode707.二分查找题目链接:https://leetcode.cn/problems/binary-search/文章讲解:https://programmercarl.com/0704.%E4%BA%8C%E5%88
二分查找力扣题目链接思路 首先,二分查找的前提是有序的数组,如果不是有序数组,则不适用二分查找。其次,确定要查找的区间,这个很重要。一般来说,通常有左闭右闭和左闭右开这两个区间,不同的区间在写法上也会有不同,这是很多人会出错的地方。左闭右闭intsearch(vector&nums,inttarget){intl=0,r=nums.size()-1;//左闭右闭区间while(ltarget)r=mid-1;//查找的数比中间的数小则更新右区间elseif(nums[mid]在左闭右闭区间中,因为是包含最左边和最右边的数,所以l=0,r=nums.size()-1;(如果是左闭右
1.基础知识——链表是由指针串联在一起的线性结构分类:(1)单链表:每个节点由数据域与指针域组成{data,next}(2)双链表:每个节点由数据域及指针域(两个指针)组成{data,pre,next}(3)循环链表:节点结构与单链表一致,但是首尾相连存储:内存分布不是连续的链表定义代码※链表优点在于长度不固定,能够实现动态增删,适用于增删频繁但是查询频率比较低的情景Leetcode203.移除链表元素题目链接:https://leetcode.cn/problems/remove-linked-list-elements/description/分析:经典链表操作,主要需要考虑两种场景当前节
参考:代码随想录文章目录链表常用技巧:1.1.移除链表元素1.2设计链表1.3反转链表链表常用技巧:在对链表进行操作时,一种常用的技巧是添加一个哑节点(dummynode),它的next指针指向链表的头节点。这样一来,我们就不需要对头节点进行特殊的判断了。特别是在需要删除节点的时候。1.1.移除链表元素链接:203.移除链表元素题目描述:给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。方法:这里的链表没有头结点,因此如果删除节点是第一个结点会不方便,所以加上了一个哑结点作为虚拟的头结点,在删除节点的时候就不用单独讨论删除第
classMyLinkedList{public:structListNode{intval;ListNode*next;ListNode(intval):val(val),next(nullptr){}};MyLinkedList(){_dummyhead=newListNode(0);_size=0;}intget(intindex){if(index>=0&&index_size){ListNode*cur=_dummyhead->next;for(inti=0;iindex;i++){cur=cur->next;}returncur->val;}elsereturn-1;}voidad
203.移除链表元素https://leetcode.cn/problems/remove-linked-list-elements/这里就涉及如下链表操作的两种方式:直接使用原来的链表来进行删除操作。设置一个虚拟头结点在进行删除操作classSolution{public:ListNode*removeElements(ListNode*head,intval){while(head!=NULL&&head->val==val){ListNode*tmp=head;head=head->next;deletetmp;}ListNode*cur=head;while(cur!=NULL&&cu
今天进入链表章节的学习了,也是之前学过的内容,这次争取快速AC。203.移除链表元素leetcode链接:https://leetcode.cn/problems/remove-linked-list-elements/题意:删除链表中等于给定值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输出:[]没什么好说的,这里注意引入了一个虚拟头节点dummy,这样就不用处理需要删除第一个节点的特殊情况。删除时C++需要手动detet
链表理论基础链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链表的类型单链表: 双链表:每一个节点有两个指针域,一个指向下一个节点,一个指向上一个节点。双链表既可以向前查询也可以向后查询。 循环链表:循环链表可以用来解决约瑟夫环问题。 链表的存储方式链表在内存中不是连续分布的,是通过指针域的指针链接在内存中的各个节点。 这个链表起始节点为2,终止节点为7,各个节点分布在内存的不同地址空间上,通过指针串联在一起。链表定义//单链表structListNode{intval;//
链表理论基础链表是一种通过指针串联起的线性结构,每个节点由两部分组成:一个数据域,一个指针域(存放指向下一节点的指针),最后一个节点的指针域指向null。链表入口节点是头结点head。双链表:两个指针域,指向下一节点和上一节点。(向前向后查询)循环链表:首尾相连。存储方式:通过指针,可以散乱的分布数据。定义链表手写链表://单链表structListNode{intval;//节点上存储的元素ListNode*next;//指向下一节点的指针ListNide():val(0),next(NULL){};ListNode(intx):val(x),next(NULL){};//节点的构造函数Li