首页 > 其他分享 >LeetCode刷题记录.Day4

LeetCode刷题记录.Day4

时间:2022-11-03 00:33:08浏览次数:69  
标签:index varHead cur val Day4 next LinkedNode LeetCode 刷题

移除链表元素

题目链接203. 移除链表元素 - 力扣(LeetCode)

class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        ListNode* varHead = new ListNode(0);
        varHead->next = head;
        ListNode* cur = varHead;
        while(cur->next != NULL){
            if(cur->next->val == val){
                ListNode* temp = cur->next;
                cur->next = cur->next->next;
                delete temp; 
            }
            else{
                cur = cur->next;
            }
        }
        head = varHead->next;
        delete varHead;
        return head;
    }
};

学生时代c语言课第一次卡壳就是卡在了链表上面,现在这个阶段,重新写链表相关的题目已经比那个时候好了很多。不过虚拟头结点法确实是没用过。学会了之后收获很高。

设计链表

题目链接707. 设计链表 - 力扣(LeetCode)

class MyLinkedList {
public:
struct LinkedNode {
        int val;
        LinkedNode* next;
        LinkedNode(int val):val(val), next(nullptr){}
    };

    MyLinkedList() {
        _varHead = new LinkedNode(0);
        _size = 0;
    }
    
    int get(int index) {
        if(index < 0 || index >_size-1){
            return -1;
        }
        LinkedNode* cur = _varHead->next;
        while(index--){
            cur = cur->next;
        }
        return cur->val;
    }
    
    void addAtHead(int val) {
        LinkedNode* newHead = new LinkedNode(val);
        newHead->next = _varHead->next;
        _varHead->next = newHead;
        _size++;
    }
    
    void addAtTail(int val) {
        LinkedNode* newTail = new LinkedNode(val);
        LinkedNode* cur = _varHead;
        while(cur->next != NULL){
            cur = cur->next;
        }
        cur->next = newTail;
        _size++;
    }
    
    void addAtIndex(int index, int val) {
        if(index > _size || index < 0){
            return;
        }
        // if(index < 0){
        //     index = 0;
        // }
        // LinkedNode* cur = _varHead;
        // while(index--){
        //     cur = cur->next;
        // }
        // LinkedNode* newAdd = new LinkedNode(val);
        // newAdd->next = cur->next;
        // cur->next = newAdd;
        // _size++;

        LinkedNode* newNode = new LinkedNode(val);
        LinkedNode* cur = _varHead;
        while(index--) {
            cur = cur->next;
        }
        newNode->next = cur->next;
        cur->next = newNode;
        _size++;
    }
    
    void deleteAtIndex(int index) {
        if(index >= _size || index < 0){
            return;
        }
        LinkedNode* cur = _varHead;
        while(index--){
            cur = cur->next;
        }
        LinkedNode* temp = cur->next;
        if(cur->next != NULL){
            cur->next = cur->next->next;
        }
        delete temp;
        _size--;
    }
private:
    int _size;
    LinkedNode* _varHead;
};

这道题,感觉挺简单的。上手写起来怎么写怎么不对,本地调试了一会儿,怎么都找不到原因。中间加了无数个条件判断。

然后发现是最初的两个地方搞错了。在删除的时候,索引大于等于长度,就不执行。因为索引下标是从0开始,index等于长度的时候也是越界了的。

get也是同理。

搞错了这两个地方的判断,导致我后面错得稀里糊涂的

标签:index,varHead,cur,val,Day4,next,LinkedNode,LeetCode,刷题
From: https://www.cnblogs.com/tianmaster/p/16853053.html

相关文章

  • 计算机二级python备考刷题知识点总结(一)
    1、zip函数此函数在学习python过程中一直没有遇到,刷二级题遇到,详细了解记录一下zip()使用方法zip函数是可以接收多个可迭代对象,然后把每个可迭代对象中的第i个元素组合在......
  • leetcode-104. 二叉树的最大深度
    题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,......
  • 【leetcode 952. 按公因数计算最大组件大小】【欧拉筛+并查集】
    importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;classSolution{List<Integer>list=newArrayList<>();intprimeNum=0......
  • leetcode-67. 二进制求和
    题目描述给你两个二进制字符串a和b,以二进制字符串的形式返回它们的和。示例输入:a="11",b="1"输出:"100"思路分析我们可以先将其转化为整数,相加之后再转为......
  • leetcode股票系列问题
    本文整合了一些大佬的文章加上自己的一些认识,供自己复习转载:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/solutions/8753/yi-ge-fang-fa-tuan-mie-6-d......
  • #yyds干货盘点# 前端歌谣的刷题之路-第一百四十三题-双列布局-浮动
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了......
  • #yyds干货盘点# 前端歌谣的刷题之路-第一百四十四题-双列布局-定位
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了......
  • LeetCode刷题第一周
    数组:内存空间连续,数据类型统一,下标从0开始二分查找704classSolution{publicintsearch(int[]nums,inttarget){//方法一:暴力解法//for......
  • leetcode110-平衡二叉树
    110.平衡二叉树这道题很容易联想到 104.二叉树的最大深度 的做法。一开始做的时候就知道可以用递归,但是又想到了左右子树的高度相差不大于1,但是子树的子树相差大于1......
  • leetcode222-完全二叉树的节点个数
    222.完全二叉树的节点个数这道题如果要最快,就要充分利用完全二叉树的性质。甚至还有二分查找法,还没怎么认真看利用树的深度判断是否为完全二叉树。若是,直接公式得出节......