首页 > 其他分享 >移除链表元素

移除链表元素

时间:2023-05-30 17:12:03浏览次数:27  
标签:head dummyHead ListNode cur 元素 next 链表 移除

代码随想录中的一道基础算法题,这里记录下

  • 设置一个虚拟头结点在进行删除操作

通过设置虚拟头节点,原链表的所有节点就都可以按照统一的方式进行移除了。

class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        ListNode* dummyHead = new ListNode(0); // 设置一个虚拟头结点
        dummyHead->next = head; // 将虚拟头结点指向head,这样方面后面做删除操作
        ListNode* cur = dummyHead;
        while (cur->next != NULL) {
            if(cur->next->val == val) {
                ListNode* tmp = cur->next;
                cur->next = cur->next->next;
                delete tmp;
            } else {
                cur = cur->next;
            }
        }
        head = dummyHead->next;  
        delete dummyHead;
        return head;
    }
};

代码

  head = dummyHead->next;  这里要注意,删除操作可能会导致原始链表的头结点被删除。为了确保返回的链表头结点是有效的,我们在循环结束后,将head指针更新为dummyHead->next。这是因为dummyHead->next指向的是删除操作后的链表的新头结点。

标签:head,dummyHead,ListNode,cur,元素,next,链表,移除
From: https://www.cnblogs.com/batiannixuge/p/17443746.html

相关文章

  • jQuery 元素尺寸
    width()/height()取得四配元素宽度和高度值只算width/heightinnerWidth()/innerHieght取得四配元素宽度和高度值包含paddingouterWidth()/outerHeight()取得四配元素究度和高度值包含padding.borderouterWidth(true)!outerHeight(true)取得匹配元素宽度和高度值包含padding......
  • uiautomator2获取UIObject元素的属性info用法
    info是UIAutomator2中用来获取控件属性信息的方法。该方法可以获取到指定元素的一些属性信息,例如控件的文本、坐标、大小、类名、包名、是否可见等。使用该方法可以帮助我们更好的理解应用程序的UI结构,并找到需要操作的控件元素。d(text=element,instance=index).infoinfo是U......
  • C# 程序开发中如何移除List集合的某列(属性)呢?
    如题,在C#&.NET,.NETCore程序开发中如何移除List集合的某列(属性)呢?比如,有以下的MyClass类: publicclassMyClass{publicintColumn1{get;set;}publicstringColumn2{get;set;}publicintColumn3{get;set;}}现在MyClass的集合myList,如何......
  • 移除LauncherJ界面搜索栏
    修改文档:packages/apps/Launcher3/src/com/android/launcher3/config/FeatureFlags.java ......
  • vue组件中修改组件外元素样式
    在实际开发中,由于项目一开始设计的一些不合理性,会在组件中通过html[media=pad]{.xxx{/*组件样式*/}}以上方式修改某些组件的样式,这样会涉及到从html层级选择,由于我style标签是这样写的<stylelang="less"scoped></style>所以导致组件内部无法......
  • 使用 Collections中的replaceAll方法 替换list中的指定元素
    以下实例演示了如何使用Collections类的replaceAll()来替换List中所有的指定元素:importjava.util.Arrays;importjava.util.Collections;importjava.util.List;publicclassImoocStudent{publicstaticvoidmain(String[]args)throwsException{......
  • 移除不需要的apk
    注意区分:隐藏launcher界面appicon1.移除不需要的apk:直接修改device.mk文档,去除不编译的apk,系统代码编译时不会将此apk编译进系统,也就是说,不仅设备launcher界面找不到改apk,设置--所有应用下也找不到改apk2.隐藏launcher界面appicon,此修改只是在launcher界面隐藏了app图......
  • Java8 List集合如何移除满足条件的元素
    1.移除List<String>中指定元素for(inti=assSupplementList.size()-1;i>=0;i--){TypgHouseOrderAssessmentSupplementitem=assSupplementList.get(i);if(item.getBzx().contains("新建房屋")){ass......
  • java集合过滤出符合条件的List元素集合(lambda表达式)
    使用Java8中的lambda表达式过滤ModelMapmodel=newModelMap();TSmClazzTSmClazz=tSmClazzService.get(id);List<Student>students=TSmClazz.getStudents();if(flag.equals("0")){List<Student>boys......
  • 2023-05-29:给你一个由 n 个正整数组成的数组 nums 你可以对数组的任意元素执行任意次
    七、设计算法,仅使用三次实数乘法即可完成复数a+bi和c+di相乘。算法需接收a、b、c和d为输入,分别生成实部ac-bd和虚部ad+bc。文心一言:可以使用如下算法来计算复数a+bi和c+di的积,且只需进行三次实数乘法:1.将a和b相乘,得到ab;2.将c和d相乘,得到cd;3.将ab+cd赋......